Vue初学05-var和let的区别
es5中var定义的变量只有全局作用域和函数作用域,没有块级作用域的概念。es6中let有块级作用域,相当于是var的进一步完善。下面以按钮点击为例,一共5个按钮,绑定点击事件,点到第几个按钮,提示第几个按钮被点击。
·
es5中var定义的变量只有全局作用域和函数作用域,没有块级作用域的概念。es6中let有块级作用域,相当于是var的进一步完善。
下面以按钮点击为例,一共5个按钮,绑定点击事件,点到第几个按钮,提示第几个按钮被点击。
var
<body>
<div id="app">
<button>button1</button>
<button>button2</button>
<button>button3</button>
<button>button4</button>
<button>button5</button>
</div>
<script>
var btns = document.getElementsByTagName("button");
for (var i = 0; i < btns.length;i++)
{
btns[i].addEventListener('click', function ()
{
console.log("第"+i+"个按钮被点击!")
});
}
</script>
</body>
运行结果如下图:
无论点击哪个按钮都提示第5个按钮被点击,因为 i 没有块级作用域,点击事件在执行的时候 i 已经变成5了。
let
如果将var改成let,如下所示
<body>
<div id="app">
<button>button1</button>
<button>button2</button>
<button>button3</button>
<button>button4</button>
<button>button5</button>
</div>
<script>
var btns = document.getElementsByTagName("button");
for (let i = 0; i < btns.length;i++)
{
btns[i].addEventListener('click', function ()
{
console.log("第"+i+"个按钮被点击!")
});
}
</script>
</body>
效果如下所示
相当于每个按钮的点击事件都有一个自己的 i 变量,都是一个块级作用域。
更多推荐
已为社区贡献3条内容
所有评论(0)