1.String 类型
字符串(String)类型是一段以单引号’’或双引号””包裹起来的文本,例如 ‘123’、”abc”。需要注意的是,单引号和双引号是定义字符串的不同方式,并不是字符串的一部分。
定义字符串时,如果字符串中包含引号,可以使用反斜杠\来转义字符串中的引号,或者选择与字符串中不同的引号来定义字符串,如下例所示:let str = "asd";
let str = '\n asd';
2.Number(数字) 类型
数值(Number)类型用来定义数值,JavaScript 中不区分整数和小数(浮点数),统一使用 Number 类型表示,如下例所示:let num1 = 123; // 整数
let num2 = 3.14; // 浮点数
注意:Number 类型所能定义的数值并不是无限的,JavaScript 中的 Number 类型只能表示 -(253 - 1) 到 (253 -1) 之间的数值。
3.Boolean(布尔) 类型
布尔(Boolean)类型只有两个值,true(真)或者 false(假)
例子:let a = true; // 定义一个布尔值 true
let b = false; // 定义一个布尔值 false
4.Null 类型
Null 是一个只有一个值的特殊数据类型,表示一个“空”值,即不存在任何值,什么都没有,用来定义空对象指针。
使用 typeof 操作符来查看 Null 的类型,会发现 Null 的类型为 Object,说明 Null 其实使用属于 Object(对象)的一个特殊值。因此通过将变量赋值为 Null 我们可以创建一个空的对象。
5.Undefined 类型
Undefined 也是一个只有一个值的特殊数据类型,表示未定义。当我们声明一个变量但未给变量赋值时,这个变量的默认值就是 Undefined。例如:let num;
console.log(num); // 输出 undefined
1.Object 类型
JavaScript 中的对象(Object)类型是一组由键、值组成的无序集合,定义对象类型需要使用花括号{ },语法格式如下:
{n1: 1, n2: v2, n3:3, …, nN: vN}
其中 n1、n2、n3、…、nN 为对象中的键,va1、v2、v3、…、vN 为对应的值。
在 JavaScript 中,对象类型的键都是字符串类型的,值则可以是任意数据类型。要获取对象中的某个值,可以使用对象名.键的形式,如下例所示:
let shuju = {
name: 'asd',
num: 20,
arr: ['js', 'web', 'php'],
str: 'Beijing',
right: true,
zero: null
};
console.log(shuju.num); // 输出 20
console.log(shuju.name); // 输出 asd
// 另外一种输出方式
const item2 = {
"my name": "充电宝",
"min-price": 9.9,
};
console.log(item2["my name"]);//输出充电宝
console.log(item2["min-price"]);//输出9.9
2.Array(数组) 类型
数组(Array)是一组按顺序排列的数据的集合,数组中的每个值都称为元素,而且数组中可以包含任意类型的数据。在 JavaScript 中定义数组需要使用方括号[ ],数组中的每个元素使用逗号进行分隔,例如:[1, 2, 3, 'hello', true, null]
另外,也可以使用 Array() 函数来创建数组,如下例所示:
let arr = new Array(1, 2, 3, 4);
console.log(arr); // 输出 [1, 2, 3, 4]
数组中的元素可以通过索引来访问。数组中的索引从 0 开始,并依次递增,也就是说数组第一个元素的索引为 0,第二个元素的索引为 1,第三个元素的索引为 2,以此类推。如下例所示:
let qwe= [1, 2, 3.14, 'asd', null, true];
console.log(let[0]); // 输出索引为 0 的元素,即 1
console.log(let[5]); // 输出索引为 5 的元素,即 true
console.log(let[100]); // 索引超出了范围,返回 undefined
3.Function(函数) 类型
函数(Function)是一段具有特定功能的代码块,函数并不会自动运行,需要通过函数名调用才能运行,如下例所示:
function asd_Asd(n){
return "asd, " + n;
}
let res = asd_Asd("qq");
console.log(res); // 输出 asd,qq
全局变量是指:在大括号或者函数的代码块外声明了一个变量,这个变量的作用域就是全局作用域,能在全局任意地方被调用。
let asd='1';
function asd1 () {
console.log(asd) // 输出:'1'
}
function asd2 () {
console.log(asd) // 输出:'1'
}
console.log(asd) // 输出:'1'
局部作用域
局部作用域指:函数内定义的变量,就是局部作用域的变量,能够在该级作用域级任意下级作用域中使用,变量aasd只能在asd函数内部包括内部函数中使用,asd()函数外部就无法调用aasd变量。
function asd() {
let aasd = 1;
console.log(aasd) // 输出:1
function asd_A() {
console.log(aasd); // 输出:1
}
asd_A();
}
function asd2() {
console.log(aasd) ;
}
asd2(); // 结果:报错
闭包的含义:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。
闭包的特点:
作为一个函数变量的一个引用,当函数返回时,其处于激活状态。
一个闭包就是当一个函数返回时,一个没有释放资源的栈区。
简单的闭包如下:
function f1(){
let a = 100;
return function f2(){
alert(++a);
}
}
函数执行时创建了一个内部函数,这个内部函数作为返回值,或以某种方式保留下来(属性),之后才会调用,这就会形成了闭包。通俗来讲,JS所有的function都是一个闭包。
(function() {
let a=1;
consol.log(a);
} ());