如何解决为什么 let 在 javaScript 中类型转换为字符串时不被识别为关键字?
javaScript 中字符串的类型转换显然忽略了 let 作为关键字。
String(let)
抛出错误 ReferenceError: let is not defined
然而,String(var)
抛出错误 SyntaxError: Unexpected token 'var'
这是预期的行为吗?
解决方法
“保留关键字”不能用作标识符(变量名)。 var
is a reserved keyword。
let
不是保留关键字,因为这会破坏向后兼容性:在没有考虑 ES6 的情况下编写的古代脚本碰巧使用 let
作为变量名会失败(浏览器尝试 {{3 }} 不要破坏向后兼容性
- 有关详细解释,请参阅该问题)。
因此,使用 String(var)
会引发语法错误,但在语法上允许使用 let
- 直到您尝试引用它(此时会出现错误)被抛出是因为没有这样的名为 let
的变量存在)。
出于完全相同的原因,可以定义名为 let
的变量,但不能定义名为 var
的变量:
var let = 123;
console.log(String(let));
var var = 123;
console.log(String(var));
此外,let
不能在严格模式下声明为标识符:
'use strict';
var let = 123;
console.log(String(let));
这是可能的,因为如果使用了严格模式,则保证运行的代码是在 ES5 之后编写的(因此无需担心任何向后兼容性)。
作为注释,这是very hard。这只是识别有效变量/标识符名称的解析器。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。