0


let与var的区别

前端小白刚学习JavaScript接触到变量的时候可能会有点懵,那就是什么时候该用let,什么时候该用var,这里给大家一个最简单,最明了的答案,看完就能明白。

首先,let是拥有块级作用域的,什么是块级作用域,直接举例说明!花括号大家都知道吧?哪里能用到花括号?是不是循环?那么let声明的变量就只能在这一花括号里生效,直接上代码!

<script>
do {
     let message = prompt('你爱我吗?');
} while (message !== '我爱你')
alert('我也爱你')
</script>

通常遇到这种题,一般都是要求用户在弹出框里输入“我爱你”得到弹框回复“我也爱你”

可刚刚说,let是拥有作用域的,只能在let所在的花括号里生效,那么do里面的message是生效的,可while里面的message是不会生效的,因为没有变量给声明变量。直接运行查看报错。

报错翻译红色引号后面的话,意思就是:“消息未定义”

说白了就是“大佬,我没有找到这个变量名”

问题来了,为什么没找到呢?

是因为他们在2个不同的范围,一个do一个while。

let声明变量存在块级作用域的概念,只在{}作用域内有效,作用域外是无法使用的

那么遇见这种题我们只能使用var,var可以重复声明变量,也不受任何限制,不存在被花括号束缚住,意思就是var可以全局生效,上代码!

<script>
do {
    var message = prompt('你爱我吗?');
} while (message !== '我爱你')
alert('我也爱你')
</script>

那么这个时候,运行出来的却是可以弹窗也可以得到我们的alert里面的值“我也爱你”

如果我输入“我不爱你”,那么就会一直循环弹窗问我,到底爱不爱我。

那么如果我输入“我爱你”,就会得到“我也爱你”

我们的这道非常简单的小题就做完了。

总结:let不是因为死循环而终止代码,就是因为let声明变量的有效范围问题,导致报错,终止了代码。

说白了:就是let在{}里,就只能在这里面生效,其他地方不能生效

           而var可以,不管几个{}包裹起来都可以全局生效

           let声明那个范围可以访问,其他地方访问不了

           var可以随意访问

一定要记住let拥有作用域,var没有作用域let不能重复声明变量,var可以重复声明变量

let是es6新增的语法, let比var更规范,更不容易造成数据污染,严谨,也是推荐let的理由之一,所以尽可能的使用let

代码中的while循环和do-while循环,咱们实际开发中,while使用的次数远超于do-while,大佬们在while中大胆的使用let吧!


本文转载自: https://blog.csdn.net/BDQNJAVATT/article/details/127040025
版权归原作者 蓝天-攻城狮 所有, 如有侵权,请联系我们删除。

“let与var的区别”的评论:

还没有评论