javascript中声明变量的关键字是什么


当前第2页 返回上一页

let也不允许同一块作用域中出现冗余声明(var可以):

1

2

3

4

var name;

var name;

let age;

let age;    //SyntaxError;标识符age已经声明过了

此外,对声明冗余报错不会因混用var和let而受影响。这两个关键字声明的并不是不同类型的变量,他们只是指出变量在相关作用域如何存在。

2.1.暂时性死区

let与var的另一个重要区别是let声明的变量不会在作用域中被提升

1

2

3

4

5

6

7

//name会提升

console.log(name);  //undefined

var name = 'matt';

 

//name不会提升

console.log(name);  //ReferenceError:name没有定义

let name = 'matt';

2.2.全局声明

与var不同,使用let在全局作用域中声明的变量不会成为window对象的属性(var声明的变量则会):

1

2

3

4

5

var name = 'matt';

console.log(window.name);   //'matt'

 

let name = 'matt';

console.log(window.name);   //undefined

不过,let声明仍然是在全局作用域中发生的,相应变量会在页面的声明周期内存续。

2.3.条件声明

let的作用域是块,所以不可能检查前面是否已经使用let声明过同名变量,同时也就不可能在没有声明的情况下声明它。使用try/catch或typeof操作符也不能解决,因为条件块中let声明的作用域仅限于该块。为此,对于let这个新的ES6声明关键字不能依赖条件声明模式。

2.4.for循环中的let声明

在使用var的时候,最常见的问题就是对迭代变量的奇特声明和修改:

1

2

3

4

5

for(var i = 0; i < 5; ++i) {

    setTimeout( () => console.log(i) ,0)

}

//你可能以为会输出0、1、2、3、4

//实际上输出的是5、5、5、5、5

在退出循环的时候迭代变量保存的是导致循环退出的值:5。在之后执行setTimeout超时逻辑时,所以i都是同一个变量,因而最终输出的都是同一个值。

使用let声明迭代变量时,JavaScript引擎在后台会为每个迭代循环声明一个新的迭代变量,每个setTimeout引用的都是不同的变量实例:

1

2

3

4

for(let i = 0; i < 5; ++i) {

    setTimeout( () => console.log(i) ,0)

}

//会输出0、1、2、3、4

【相关推荐:javascript学习教程

3.const声明

const的行为与let基本相同,唯一一个重要区别是它声明变量时必须同时初始化变量,且尝试修改const声明的变量会导致运行错误。

const声明的限制只适用于它指向的变量的引用。如果const变量引用的是一个对象,那么修改这个对象内部的属性并不违反const的限制:

1

2

const person = { };

person.name = 'matt';

4.使用建议

let和const是ES6中新增的,从客观上为JavaScript更精确地声明作用域和语义提供更好的支持。

4.1.不使用var

限制自己只使用let和const有助于提升代码质量,因为变量有了明确的作用域、声明位置,以及不变的值。

4.2.const优先,let次之

使用const声明可以让浏览器运行时强制保持变量不变,也可以让静态代码分析工具提前发现不合法的赋值操作。因此,我们应该优先使用const来声明变量,只有在提前知道未来会有修改时再使用let。

更多编程相关知识,请访问:编程入门!!

以上就是javascript中声明变量的关键字是什么的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

vue.js中v-html渲染的dom添加scoped的样式的方法介绍

canvas实现九宫格心形拼图的方法(附代码)

javascript中,nan是什么类型?

javascript诞生于哪年

javascript高阶函数的用法介绍

如何处理javascript内存泄露

javascript删除数组元素的方法

javascript中如何将url转换成汉字

javascript中怎么求数组的平均值

javascript怎么将array转为字符串

更多相关阅读请进入《javascript》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...