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