【发布时间】:2018-08-18 12:12:42
【问题描述】:
当我尝试为 JavaScript 关键字名称分配数值时,如下所示
var a="12345";
var b=a.substring(1,3)
console.log(b);
var name=12345;
var y=name.substring(1,3)
console.log(y);
我排除了它抛出类型错误,但它为变量 b 和 name 产生相同的输出。
我知道关键字不应该用作变量,仍然想知道它是如何工作的。
【问题讨论】:
-
JS 不关心类型意味着不是强类型的,所以当你写 name.substring 时,js 不知道它是字符串、int 还是对象。在运行时它只是将其解析为字符串并执行该功能。当您尝试添加 1+"123" 时也是如此,它会给您 1123 而不是错误
-
这就是为什么现在人们使用打字稿来避免这种情况的原因。
-
name是window.name,它始终是一个字符串。 @Atul您不能在数字类型的变量上使用子字符串。请注意,使用let而不是var将允许您重新定义该变量。 -
@Jeto 问题是为什么它没有抛出错误,我正在解释。
-
@Atul 如果您将
name替换为他第 4 行中的任何其他内容,您将收到错误消息。它没有抛出一个的原因是因为var name = 12345没有创建一个整数变量,因为它覆盖了window.name这是一个字符串(并且必须是一个)。
标签: javascript google-chrome substring keyword