var let const 三者的区别

需要理解变量提升、全局变量、局部变量、命名空间、局部作用域、解构赋值。

JS  var 声明的变量都是作用于函数体内,全局变量其实就是全局对象window的一个属性。

JS 会对变量进行变量提升,即把变量的声明提升到函数体的顶部,但是变量的赋值没有提升。


var定义的变量,没有块的概念,可以跨块访问, 不能跨函数访问,即整个函数体内都可以访问

let定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问。局部作用域。

const用来定义常量,使用时必须初始化(即必须赋值),只能在块作用域里访问,而且不能修改。

不同js库的全局函数可能存在命名空间冲突,因为全局变量都会绑定到window上面。

不同库的解决方法是定义自己的全局变量myapp,所声明的所有变量都成为全局变量的一个属性。

// 唯一的全局变量MYAPP:
var MYAPP = {};

// 其他变量:
MYAPP.name = 'myapp';
MYAPP.version = 1.0;

// 其他函数:
MYAPP.foo = function () {
    return 'foo';
};
解构赋值:
// 如果浏览器支持解构赋值就不会报错:
var [x, y, z] = ['hello', 'JavaScript', 'ES6'];

let [x, [y, z]] = ['hello', ['JavaScript', 'ES6']];

var person = {
    name: '小明',
    age: 20,
    gender: 'male',
    passport: 'G-12345678',
    school: 'No.4 middle school'
};
var {name, age, passport} = person;

猜你喜欢

转载自blog.csdn.net/aganliang/article/details/106989281