【问题标题】:javascript substring method support for interger - chrome整数的javascript子字符串方法支持 - chrome
【发布时间】: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 而不是错误
  • 这就是为什么现在人们使用打字稿来避免这种情况的原因。
  • namewindow.name,它始终是一个字符串。 @Atul您不能在数字类型的变量上使用子字符串。请注意,使用 let 而不是 var 将允许您重新定义该变量。
  • @Jeto 问题是为什么它没有抛出错误,我正在解释。
  • @Atul 如果您将name 替换为他第 4 行中的任何其他内容,您将收到错误消息。它没有抛出一个的原因是因为var name = 12345 没有创建一个整数变量,因为它覆盖了window.name 这是一个字符串(并且必须是一个)。

标签: javascript google-chrome substring keyword


【解决方案1】:

name 指的是window.name,一个字符串(看起来是由浏览器强制执行的)。

当您编写var name = 12345; 时,您基本上会覆盖它(由于var 的工作方式,请参阅differences betwen var and let)。

由于window.name 必须包含一个字符串,因此在内部将其转换为'12345'

【讨论】:

    猜你喜欢
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 2016-09-18
    • 2020-10-04
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    相关资源
    最近更新 更多