【问题标题】:how javascript interpreter understands the data type of a variable? [duplicate]javascript解释器如何理解变量的数据类型? [复制]
【发布时间】:2016-05-18 22:09:41
【问题描述】:

我想知道,javascript解释器在执行时如何知道变量的数据类型。在 Java 和其他语言的情况下,我们使用 来声明数据类型,但在 javascript 中,我们只是将其声明为“var”。

var number1 = 2;
var number2 = 3;

var number3 = number1+number2;

console.log(number3);

输出为 5 。为什么不是 23 岁?

谢谢。

【问题讨论】:

    标签: javascript


    【解决方案1】:

    因为两者都不是字符串。

    变量的类型与该变量的内部表示相关联。

    在源解析期间,变量根据语言语法进行词法分析。没有引号,不是字符串,所以它是一个数字。由于两者都是数字,所以结果是一个数字。

    【讨论】:

      【解决方案2】:

      您的变量被解释为一个数字,因为您没有使用“”将其设为字符串。

      var number1 = 2;
      var number2 = 3;
      
      var number1_ = "2";
      var number2_ = "3";
      
      var number3 = number1+number2;
      var number3_ = number1_+number2_;
      
      console.log(number3); // 5
      console.log(number3_); // 23
      

      【讨论】:

        【解决方案3】:

        因为 2 和 3 是数字。用 var 声明变量并不意味着“删除类型”或“将类型设置为字符串”,它只是意味着它可以容纳任何类型。您为 number1 分配了一个编号,为 number2 分配了一个编号。因此,将这些加在一起,JS 解释器知道它将两个数字加在一起。

        【讨论】:

          【解决方案4】:

          JavaScript 变量是用于存储数据值的容器。

          当您为容器分配一个数字时,它的解释器将其称为数字 否则,如果您分配一个字符串,它会被视为字符串

          var x = '2' ;
          var y = '3'
          console.log(typeof x) // string
          console.log(typeof y) // string
          
          console.log(x+y) // '23'
          

          现在给每一个分配一个数字:

          var x = 2 ;
          var y = 3
          console.log(typeof x) // number
          console.log(typeof y) // number
          
          console.log(x+y) // 5
          

          【讨论】:

            【解决方案5】:

            因为它是number 类型:

            typeof 4
            --> "number"
            
            typeof '4'
            --> "string"
            

            【讨论】:

              【解决方案6】:

              我想直接回答你关于javascript解释器如何知道变量的数据类型的问题。

              您需要了解的关于 javascript 的知识与 Java 不同的是,JS 中的变量不包含类型。在 JS 中,它是保存类型的值。并且值的类型不能更改。但它可以被强制

              因此,即使变量的值本质上是一个数字,例如数字 5,也可以通过隐式强制从它创建一个新字符串“5”,而无需显式更改变量的类型,因为变量本身从未保持开始的类型与。

              不是变量变为字符串,而是根据您使用它的表达式的上下文创建一个新的字符串值并将其用于变量。

              查找 javascript coercion 了解更多信息。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2013-05-20
                • 1970-01-01
                • 1970-01-01
                • 2019-03-20
                相关资源
                最近更新 更多