前端之家收集整理的这篇文章主要介绍了
JavaScript变量声明var,let.const及区别浅析,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
var声明变量的作用域限制在其声明位置的上下文中
全局变量,并且赋值为0。
console.log(typeof z); // undefined,因为z还不存在。
function a() { // 当a被
调用时,
var y = 2; // y被声明成
函数a作用域的变量,然后赋值成2。
console.log(x,y); // 0 2
function b() { // 当b被
调用时,
x = 3; //
全局变量x被赋值为3,
不生成全局变量。
y = 4; // 已存在的外部
函数的y变量被赋值为4,
不生成新的
全局变量。
z = 5; // 创建新的
全局变量z,并且给z赋值为5。
} // (在严格模式下(strict mode)抛出ReferenceError)
b(); //
调用b时创建了
全局变量z。
console.log(x,y,z); // 3 4 5
}
a(); //
调用a时同时
调用了b。
console.log(x,z); // 3 5
console.log(typeof y); // undefined,因为y是a
函数的本地(local)变量。
let 声明的变量只在其声明的块或子块中可用,var的作用域是整个封闭函数
在 ECMAScript 2015 中,let绑定不受变量提升的约束,这意味着let声明不会被提升到当前执行上下文的顶部。
在块中的变量初始化之前,引用它将会导致 ReferenceError(而使用 var 声明变量则恰恰相反,该变量的值是 undefined )
当在块中使用时,let将变量的作用域限制为该块。注意var的作用域在它被声明的函数内的区
const 常量必须在声明的同时指定它的值.
const声明创建一个值的只读引用。但这并不意味着它所持有的值是不可变的(如引用内容是对象),只是变量标识符不能重新分配一个常量不能和它所在作用域内的其他变量或函数拥有相同的名称
输出 7
console.log("my favorite number is: " + MY_FAV);
// 尝试重新声明会报错
const MY_FAV = 20;
// MY_FAV 保留给上面的常量,这个操作会失败
var MY_FAV = 20;
// 也会报错
let MY_FAV = 20;
// 注意块范围的性质很重要
if (MY_FAV === 7) {
// 没问题,并且创建了一个块作用域变量 MY_FAV
// (works equally well with let to declare a block scoped non const variable)
let MY_FAV = 20;
// MY_FAV 现在为 20
console.log('my favorite number is ' + MY_FAV);
// 这被提升到全局上下文并引发
错误
var MY_FAV = 20;
}
// MY_FAV 依旧为7
console.log("my favorite number is " + MY_FAV);
// 常量要求一个初始值
const FOO; //
SyntaxError: missing = in const declaration
// 常量可以定义成对象
const MY_OBJECT = {"key": "value"};
// 重写对象和上面一样会失败
MY_OBJECT = {"OTHER_KEY": "value"};
// 对象
属性并不在保护的范围内,下面这个声明会成功执行
MY_OBJECT.key = "otherValue";
// 也可以用来定义数组
const MY_ARRAY = [];
// It's possible to push items into the array
// 可以向数组填充数据
MY_ARRAY.push('A'); // ["A"]
// 但是,将一个新数组赋给变量会引发
错误
MY_ARRAY = ['B']
下面介绍下在javascript中有三种声明变量的方式:var、let、const。
var 声明全局变量,换句话理解就是,声明在for循环中的变量,跳出for循环同样可以使用。
声明在for循环内部的sum,跳出for循环一样可以使用,不会报错正常弹出结果
let:声明块级变量,即局部变量。
在上面的例子中,跳出for循环,再使用sum变量就会报错,有着严格的作用域,变量只作用域当前隶属的代码块,不可重复定义同一个变量,不可在声明之前调用,必须先定义再使用,会报错,循环体中可以用let
注意:必须声明'use strict';后才能使用let声明变量否则浏览并不能显示结果,
const:用于声明常量,也具有块级作用域 ,也可声明块级。
它和let一样,也不能重复定义同一个变量,const一旦定义,无法修改。
总结
以上所述是小编给大家介绍的JavaScript变量声明var,let.const及区别浅析。编程之家 jb51.cc 收集整理的教程希望能对你有所帮助,如果觉得编程之家不错,可分享给好友!感谢支持。
原文链接:https://www.f2er.com/js/32661.html