认清js中var a=b=1和var a=1,b=1的区别

js中一次性定义多个变量的时候,可以用:var a=1,b=1这种中间用逗号隔开的方式,但有些时候为了省事,直接定义var a=b=1。那这两种写法方式最后效果是一样的吗?有没有什么区别呢?请大家看下面的范例:

1、用var a=b=1的方式

在这里插入图片描述
可以看出:变量b的作用域是全局的,变量a是局部的

2、用var a=1,b=1的方式

在这里插入图片描述
可以看出:变量a和变量b的作用域都是局部

结论:var a=b=1中的变量b会成为全局变量,而var a=1,b=1中的a、b变量都为局部变量。

在严格模式下, 变量必须先声明,直接给变量赋值,不会隐式创建全局变量比如webpack打包js后会在严格模式下

<script>
    "use strict";
    var a=b=1;
    console.log(a,b)
</script>

报错:Uncaught ReferenceError: b is not defined

因此以后写代码定义变量的时候,要严格按照语法规范,不能用偷懒的写法哦。否则可能出现意想不到的情况,造成难以排查的程序bug。

猜你喜欢

转载自blog.csdn.net/qq_34035425/article/details/83085564
今日推荐