js中let和var都可以定义变量,本文主要和大家介绍js中let和var定义变量的区别,非常不错,具有参考借鉴价值,需要的朋友可以参考下,希望能帮助到大家。
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不是同一个变量
}());
相关推荐:
php预定义变量详解
javascript如何定义变量?
关于javascript变量声明和定义变量var的不同理解和分析
以上就是js中let和var如何定义变量的详细内容。