如何计算JavaScript表达式?

如何计算JavaScript表达式?,javascript,Javascript,在JavaScript中,是否有人可以解释以下两个表达式的结果: “4”+4和4+4” 谢谢 他们都是44岁。“4”作为字符串出现时,会将整个操作转换为字符串,因此这两个字符会连接在一起。两者都会产生字符串: "44" 这是因为+运算符有两个用途——添加和连接。并且,如果任一操作数是字符串(或者被内部转换为字符串),它们将被串联 这被描述为: 7) 如果(lprim)是String或(rprim)是String,则 a)返回串接(lprim)后接(rprim)的结果字符串 8) 返回将加法运算

在JavaScript中,是否有人可以解释以下两个表达式的结果:

“4”+4和4+4”


谢谢

他们都是44岁。“4”作为字符串出现时,会将整个操作转换为字符串,因此这两个字符会连接在一起。

两者都会产生
字符串:

"44"
这是因为
+
运算符有两个用途——添加和连接。并且,如果任一操作数是
字符串
(或者被内部转换为
字符串
),它们将被串联

这被描述为:

7) 如果(lprim)是String或(rprim)是String,则

a)返回串接(lprim)后接(rprim)的结果字符串

8) 返回将加法运算应用于(lprim)和(rprim)的结果。见下面的注释

如果要确保添加,可以在每个上使用或:

Javascript会执行数学运算,直到碰到一个字符串,然后切换到串联,并且还会首先遵循常规公式规则run()操作。

引用自:

有一件事可能会让初学者感到困惑,那就是JavaScript使用+ 使用文本字符串表示与它完全不同的内容 意思是用数字。而使用数字+表示将数字相加 与text+一起表示将它们连接在一起。串联 基本上是指将一个文本字符串连接到第一个so的末尾 “我的”+“书”的结果是“我的书”。初学者倾向于 令人困惑的是,3+3等于6,“3”+“3”等于“33”

还可以将+=与文本字符串一起使用,直接添加变量或 右侧的文本位于 左

混合数据类型

在处理变量时,可能会出现额外的混淆 那是不同类型的。所有操作都要求变量 它们在两台机器上运行时,应为同一类型。在JavaScript之前 能够执行涉及两个不同数据的任何操作 类型,它必须首先将其中一个变量从一个类型转换为 其他的。没有第一个数字,也不能向文本字符串中添加数字 将数字转换为文本或将文本转换为数字

在数据类型之间转换时,我们有两种选择。我们可以允许 JavaScript自动为我们进行转换,或者我们可以告诉 JavaScript我们要转换的变量

JavaScript将尝试将任何文本字符串转换为数字 执行减法、乘法、除法和 拿走剩余物。您的文本字符串实际上需要包含 JavaScript可以转换为数字的东西(例如,字符串) “10”)以便转换为工作

如果我们使用+那么这可能意味着我们想要转换 字符串转换为一个数字,然后添加或我们要转换该数字 并将其连接到字符串。JavaScript只能执行以下操作之一: 这两种选择。它总是将数字转换为字符串(因为 这将在字符串是否包含数字的情况下起作用)

这里有一些例子

  • “5”-3=2

  • “5”+3=“53”

  • 2+“7”=“27”

  • 5+9+“1”=“141”

  • 由于减法仅适用于数字,因此1将转换文本字符串 在进行减法运算之前,先将其转换为一个数字

    在2和3中,数字在输入之前转换为文本字符串 连接到另一个文本字符串

    在4中,最左边的加法首先完成。因为这两个都是数字 它们实际上被添加在一起,而不是作为文本处理。结果 第一个加法的情况与第三个加法的情况类似 因此,添加的结果将转换为文本和 连接

    要真正强制JavaScript将文本字符串转换为数字,我们需要 可以使用数字(“3”)或强制JavaScript转换 我们可以使用字符串(5)将数字转换为文本字符串


    JS中的表达式基于两个基本原则

  • B O D M A(包括混凝土)S
  • 从左到右的执行顺序
  • 然而,这并不是直截了当的

    for+运算符 对于遇到的数字,它将使用从左到右的执行进行数学加法,但是,一旦遇到字符串,它就会将结果(直到遇到字符串为止)与表达式的其余部分连接起来

    //从左到右执行
    console.log(10+10+“10”)//2010,(10+10)的numtype+“10”的stringtype concat(20+“10”)
    console.log(10+10+“10”+10+10)//20101010,
    //数字类型的(10+10)+“10”stringtype(现在因为一个字符串是enc。)+(10+10)数字类型将充当字符串并被连接=20+“10”+“1010”
    console.log(“10”+[10,10,10]+10)//1010,101010
    //stringtype的“10”+numtype数组+numtype的10
    
    //“10”concats和数组的第一个元素,最后10个concats和数组的最后一个元素。
    它打印的“44”都被假定为字符串。你应该得到一个JavaScript参考来解决这些基本问题。如果这是一个引号,源代码应该归于某个地方。不一定是最好的答案,但我理解我想要的:表达式从左到右求值,我理解+运算符的串联。谢谢
    var a = "4", b = 4;
    
    console.log(parseFloat(a) + parseFloat(b)); // 8;
    
    console.log((+a) + (+b)); // 8, extra parenthesis for clarity
    
        1+'1'+1 = '111'
        1+1+'1' = '21'
       '1'+(1+1) = '12'
       '1'+1+1 = '111'