当前位置: 移动技术网 > IT编程>开发语言>JavaScript > js中let和var定义变量的区别

js中let和var定义变量的区别

2018年02月10日  | 移动技术网IT编程  | 我要评论

javascript 严格模式

第一次接触let关键字,有一个要非常非常要注意的概念就是”javascript 严格模式”,比如下述的代码运行就会报错:

let hello = 'hello world.';
console.log(hello);

错误信息如下:

let hello = 'hello world.';
^^^
syntaxerror: block-scoped declarations (let, const, function, class) not yet supported outside strict mode
 ...

解决方法就是,在文件头添加”javascript 严格模式”声明:

'use strict';
let hello = 'hello world.';
console.log(hello);

let和var关键字的异同

声明后未赋值,表现相同

'use strict';
(function() {
 var vartest;
 let lettest;
 console.log(vartest); //输出undefined
 console.log(lettest); //输出undefined
}());

使用未声明的变量,表现不同:

(function() {
 console.log(vartest); //输出undefined(注意要注释掉下面一行才能运行)
 console.log(lettest); //直接报错:referenceerror: lettest is not defined
 var vartest = 'test var ok.';
 let lettest = 'test let ok.';
}());

重复声明同一个变量时,表现不同:

'use strict';
(function() {
 var vartest = 'test var ok.';
 let lettest = 'test let ok.';
 var vartest = 'vartest changed.';
 let lettest = 'lettest changed.'; //直接报错:syntaxerror: identifier 'lettest' has already been declared
 console.log(vartest); //输出vartest changed.(注意要注释掉上面lettest变量的重复声明才能运行)
 console.log(lettest);
}());

变量作用范围,表现不同

'use strict';
(function() {
 var vartest = 'test var ok.';
 let lettest = 'test let ok.';
 {
 var vartest = 'vartest changed.';
 let lettest = 'lettest changed.';
 }
 console.log(vartest); //输出"vartest changed.",内部"{}"中声明的vartest变量覆盖外部的lettest声明
 console.log(lettest); //输出"test let ok.",内部"{}"中声明的lettest和外部的lettest不是同一个变量
}());

总结

以上所述是小编给大家介绍的js中let和var定义变量的区别,希望对大家有所帮助

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网