首页 > 代码库 > JS中const、var和let区别
JS中const、var和let区别
在JavaScript中有三种声明变量的方式:var、let、const。
1.const 声明创建一个只读的常量。这不意味着常量指向的值不可变,而是变量标识符的值只能赋值一次,必须初始化。
const b = 2;
//正确
// const b;//错误,必须初始化
console.log(
‘函数外const定义b:‘
+ b);
//有输出值
// b = 5;
// console.log(‘函数外修改const定义b:‘ + b);//无法输出
2.var 语句用于声明变量。
var a; //undefined (如果不初始化,输出undefined)
var a=666; //放到方法外面为全局变量
function fun(){
//var a=555; //放到方法内部为局部变量,只能在fun()内部读取
console.log(a); //666
}
如果不实用var 关键词,无论放到方法内还是方法外都是全局变量,所以var 会影响变量作用域。
3.let是块级作用域,函数内部使用let定义后,对函数外部无影响。
ES6新增了
let
命令,用来声明变量。它的用法类似于var
,但是所声明的变量,只在let
命令所在的代码块内有效。即声明一个局部变量。以for循环为例:
下面的代码如果使用
var
,最后输出的是10
。var a = [];for (var i = 0; i < 10; i++) { a[i] = function () { console.log(i); };}a[6](); // 10
上面代码中,变量i
是var
声明的,在全局范围内都有效。所以每一次循环,新的i
值都会覆盖旧值,导致最后输出的是最后一轮的i
的值。(常见于闭包的考察)
如果使用let
,声明的变量仅在块级作用域内有效,最后输出的是6。
var a = [];for (let i = 0; i < 10; i++) { a[i] = function () { console.log(i); };}a[6](); // 6
上面代码中,变量i
是let
声明的,当前的i
只在本轮循环有效,所以每一次循环的i
其实都是一个新的变量,所以最后输出的是6
。
JS中const、var和let区别
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。