JavaScript 中有以下几种常见的数据类型:
-
基本类型(原始类型):
- 字符串(String):表示文本数据。
- 数字(Number):表示数值数据。
- 布尔(Boolean):表示真(true)或假(false)值。
- undefined:表示未定义的值。
- null:表示空值或没有值。
-
引用类型:
- 对象(Object):表示复杂的数据结构,包括对象、数组、函数等。
- 数组(Array):表示有序的集合。
- 函数(Function):表示可被调用的代码块。
- 日期(Date):表示日期和时间。
- 正则表达式(RegExp):表示用于匹配字符串的模式。
除了以上列出的数据类型外,JavaScript 中还有一些特殊的数据类型,例如 Symbol(表示唯一的标识符)和 BigInt(表示任意精度的整数)。
需要注意的是,JavaScript 是一种动态类型语言,变量的数据类型是在运行时确定的,可以随时根据需要改变变量的类型。
另外,可以使用 typeof
运算符来检查一个值的数据类型。例如,typeof "hello"
返回 “string”,typeof 42
返回 “number”。但是需要注意 typeof null
的返回值是 “object”,这是一个历史遗留问题。
在js中定义一个数字
在 JavaScript 中,可以使用数字字面量来定义一个数字。数字字面量可以是整数或小数,并且可以使用科学计数法表示非常大或非常小的数。
以下是定义数字的几种方式:
// 整数
let a = 123;// 小数
let b = 3.14;// 科学计数法
let c = 6.02e23; // 6.02乘以10的23次方,即 6.02×10²³
let d = 1.2345e-6; // 1.2345乘以10的负6次方,即 1.2345×10⁻⁶
需要注意的是,在 JavaScript 中,数字是一种原始类型。当您使用算术运算符(+、-、*、/、% 等)对数字进行计算时,会得到一个新的数字作为结果。
另外,JavaScript 中还有一些特殊值,例如 Infinity(无穷大)、-Infinity(负无穷大)和 NaN(不是数字)。这些值也属于数字类型,但不是有效的数字值,需要注意。
let和var的区别
let
和 var
都是 JavaScript 中用于声明变量的关键词。它们之间的主要区别在于作用域和变量提升的行为上。
-
作用域
var
声明的变量属于函数作用域或全局作用域,而let
声明的变量属于块级作用域。块级作用域是一对花括号({})中的任何语句,例如if
、for
或while
循环语句。示例:
function example() {var x = 1;if (true) {var x = 2;}console.log(x); // 2 } example();function example2() {let y = 1;if (true) {let y = 2;}console.log(y); // 1 } example2();
在第一个示例中,
var
声明的x
变量的作用域是函数作用域,其在if
块中重复声明(该块也属于函数作用域)。所以console.log(x)
打印的结果是2
。在第二个示例中,
let
声明的y
变量的作用域是块级作用域(即if
块)。所以console.log(y)
打印的结果是1
。 -
变量提升
在使用
var
声明变量时,它们会被提升到它们所在作用域的顶部,在声明之前的任何地方都可以访问它们。这种行为被称为变量提升。示例:
function example() {console.log(x); // undefinedvar x = 1; } example();
上面的示例中,
var
声明的x
变量会被提升到函数作用域的顶部,但它没有被赋值,因此第一行打印出来的是undefined
。在使用
let
声明变量时,变量在声明之前不会被访问,不会存在变量提升的行为。
综上所述,let
比 var
更容易控制变量的作用域,不会存在变量提升的问题。建议在使用变量时优先使用 let
,避免因为变量提升问题导致的不良后果。