这个话题对于一些老鸟来说可能根本算不上疑问,但对于新手来说也许除了最常见的var之外,let和const较少使用的机会。 所以在本文中,我将会通过一些例子来为大家介绍如何在Javascript中灵活使用var、let和const这些关键字来定义变量,以及这些关键字它们之间有什么异同。 如果你懒得看下面的代码,那我可以先把概念结论说出:
下面我将通过示例的形式来详细为大家介绍它们三者之间的异同: Varvar用以声明一个变量,并且同时我们可以在声明语句中初始化所声明的变量。 例如: var a = 10;
考虑以下代码片段: function nodeSimplified() { var a =10; console.log(a); // 输出 10 if(true) { var a=20; console.log(a); // 输出 20 } console.log(a); // 输出 20 } 在上面的代码中,你可以发现,当变量a在if代码段里被更新时,它的值被全局更新了,因此在经过了if代码后,被更新的值仍然被保留着。这与其他语言中的全局变量有点类似。但是,在使用这个功能时要非常小心,因为它有可能会覆盖一个已有的值。 letlet语句在一个块级范围里声明一个局部变量。和 例如: let a = 10;
考虑下面的代码片段: function nodeSimplified() { let a =10; console.log(a); // output 10 if(true) { let a=20; console.log(a); // output 20 } console.log(a); // output 10 } 它和大多数语言中我们所见的表现行为是一致的。 function nodeSimplified() { let a =10; let a =20; // 抛出语法错误 console.log(a); } 错误信息:"未捕获的异常:标识符'a'已经被声明过。" 但如果使用 function nodeSimplified() { var a =10; var a =20; console.log(a); // 输出 20 } 使用 我希望上面的例子能帮你更好地理解 constconst语言中的变量只能被赋值一次,然后就不能在被赋值。 例如: const a = 10; function nodeSimplified() { const MY_VARIABLE =10; console.log(MY_VARIABLE); // 输出 10 } 照例,命名规范指出我们应该用大写字母声明常量。当然,const a = 10 在上面的代码中会的起到相同的作用。为了让代码长期可维护,命名规范还是值得遵守的。 问题:如果给一个const变量重新赋值会发生什么? 考虑下面的代码: function nodeSimplified() { const MY_VARIABLE =10; console.log(MY_VARIABLE); // 输出 10 MY_VARIABLE =20; // 抛出类型错误 console.log(MY_VARIABLE); } 错误信息:"未捕获的类型错误:给const变量赋值"。 当我们尝试给已有的const变量赋值时,这段代码会抛出一个错误。 介绍就到此结束,希望这篇短小精悍的文章能够帮助到各位更好的理解在Javascript中声明变量时使用不同关键字上到底有何异同。
|
|