- JavaScript基本数据类型:
- 数值(Number):包括整数和浮点数,如
1
、3.14
等。
- 字符串(String):由零个或多个字符组成的序列,用单引号、双引号或反引号包裹,如
'hello'
、"world"
、`JavaScript`
。
- 布尔值(Boolean):只有两个值
true
和false
。
- 空值(Null):表示一个空对象指针,只有一个值
null
。
- 未定义(Undefined):当一个变量声明但未赋值时,其值为
undefined
。
- 符号(Symbol):ES6 引入的新类型,代表独一无二的值。
- 大整数(BigInt):ES2020 引入,用于表示大于
2^53 - 1
的整数。
- 字符串与数字加法运算的数据类型转换:
当字符串
'123'
与数字456
进行加法运算时,JavaScript 会将数字456
转换为字符串,然后进行字符串拼接。结果为'123456'
。这是因为在加法运算中,如果其中一个操作数是字符串,JavaScript 会将另一个操作数也转换为字符串,以进行字符串拼接操作。
- let和var声明变量的区别:
- 作用域:
var
声明的变量具有函数作用域或全局作用域。例如,在函数内部使用var
声明的变量,在整个函数内都可以访问,即使在声明之前使用(存在变量提升)。
let
声明的变量具有块级作用域,只在{}
块内有效。例如在if
语句块、for
循环块等内部使用let
声明的变量,在块外部无法访问。
- 变量提升:
var
存在变量提升,即变量可以在声明之前使用,其值为undefined
。例如:
console.log(a); // undefined
var a = 1;
- `let`不存在变量提升,在声明之前使用会报错,即所谓的“暂时性死区”。例如:
console.log(b); // ReferenceError: b is not defined
let b = 2;
- 重复声明:
var
允许在同一作用域内重复声明同一个变量,后面的声明会覆盖前面的声明。例如:
var c = 3;
var c = 4;
console.log(c); // 4
- `let`不允许在同一作用域内重复声明同一个变量,否则会报错。例如:
let d = 5;
let d = 6; // SyntaxError: Identifier 'd' has already been declared