JavaScript的数据类型和变量
JavaScript是一种动态类型语言,其变量的类型是根据值自动推断的。JavaScript中有七种基本数据类型和一种复杂数据类型。
基本数据类型
1. 数字(Number)
数字类型表示整数和浮点数。例如:
var x = 10; // 整数
var y = 3.14; // 浮点数
2. 字符串(String)
字符串类型表示文本。可以用单引号或双引号表示。例如:
var name = "John"; // 双引号
var message = 'Hello world'; // 单引号
3. 布尔(Boolean)
布尔类型表示真或假。例如:
var isFinished = true; // 真
var isActive = false; // 假
4. null
null表示一个空值。例如:
var person = null;
5. undefined
undefined表示一个未定义的值。例如:
var age;
console.log(age); // undefined
6. Symbol
Symbol是ES6中新增的数据类型,表示唯一的标识符。例如:
var id = Symbol("id");
7. BigInt
BigInt是ES10中新增的数据类型,表示任意精度的整数。例如:
var num = 1234567890123456789012345678901234567890n;
复杂数据类型
1. 对象(Object)
对象类型表示一个包含多个属性的数据结构。例如:
var person = {
name: "John",
age: 30,
address: {
city: "New York",
state: "NY"
}
};
2. 数组(Array)
数组类型表示一个包含多个值的数据结构。例如:
var fruits = ["apple", "banana", "orange"];
变量
在JavaScript中,变量可以用var、let或const关键字声明。其中,var是ES5中引入的,let和const是ES6中引入的。
var
var可以声明全局变量或局部变量。例如:
var x = 10; // 全局变量
function foo() {
var y = 20; // 局部变量
}
let
let可以声明块级作用域的变量。例如:
function foo() {
let x = 10; // 块级作用域变量
if (true) {
let y = 20; // 块级作用域变量
}
}
const
const可以声明常量,其值不能被修改。例如:
const PI = 3.14;
类型转换
JavaScript中的数据类型可以相互转换。常见的类型转换包括:
1. 字符串转数字
可以使用parseInt()或parseFloat()将字符串转换为数字。例如:
var x = parseInt("10"); // 整数
var y = parseFloat("3.14"); // 浮点数
2. 数字转字符串
可以使用toString()将数字转换为字符串。例如:
var x = 10;
var str = x.toString(); // "10"
3. 布尔转数字
可以使用Number()将布尔值转换为数字。true转换为1,false转换为0。例如:
var x = Number(true); // 1
var y = Number(false); // 0
4. 数字转布尔
可以使用Boolean()将数字转换为布尔值。非零数字转换为true,0转换为false。例如:
var x = Boolean(10); // true
var y = Boolean(0); // false
变量作用域
在JavaScript中,变量有全局作用域和局部作用域。
全局作用域
全局作用域中声明的变量可以在整个程序中访问。例如:
var x = 10; // 全局变量
function foo() {
console.log(x); // 10
}
foo();
局部作用域
局部作用域中声明的变量只能在局部作用域内访问。例如:
function foo() {
var x = 10; // 局部变量
console.log(x); // 10
}
foo();
console.log(x); // 报错:x未定义
变量提升
在JavaScript中,变量可以在声明之前使用。这是因为JavaScript会将变量的声明提升到作用域的顶部。例如:
function foo() {
console.log(x); // undefined
var x = 10;
}
foo();
上面的代码中,变量x在声明之前就被使用了,但是并没有报错。这是因为JavaScript会将变量x的声明提升到函数的顶部,相当于:
function foo() {
var x;
console.log(x); // undefined
x = 10;
}
foo();
总结
JavaScript中有七种基本数据类型和一种复杂数据类型。变量可以用var、let或const关键字声明。JavaScript中的数据类型可以相互转换。变量有全局作用域和局部作用域,变量的声明会被提升到作用域的顶部。