基本的算术运算符是*、/、%、+、-。除了+加法,其它的运算符特别简单,只是在必要的时候操作符转化为数字而已,然后求积、商、余(模)和差。所有那些无法转换为数字的操作都将转换为NaN值。如果操作数(或者转换结果)是NaN值,算术运算结果也是NaN
运算符“/”用第二个操作数来除以第一个操作数,如果你使用过那些区分整数型和浮点数型的编程语言。那么用一个整数除以一个整数时,则希望得到的结果也是整数。在javascript中所有的数字都是浮点数型的,除法运算的结果也是浮点型。比如5/2结果是2.5,而不是2。除数为0的运算结果为正无穷大或负无穷大。而0/0的结果是NaN。所有这些运算均不会报错。
运算符“%”计算的是第一个操作数对第二个操作数的模,换句话说,就是第一个操作数除以第二个操作鼠的余数。结果的符号和第一个操作鼠(被除数)符号保持一致。例如5%2的结果为1,-5%2为-1。
求余运算符的操作数通常都是整数,但也适用于浮点数。6.5%2.1结果是0.2。(0.19999999999999973)
i.“+”运算符
二元加法运算符“+”可以对两个数字做加法,也可以做字符串连接操作:
1+2 //=> 3 "hello" + "" + "there" // =>"hello there" "1"+"2" //=>"12"
当两个操作数都是数字或都是字符串的时候,计算结果是显而易见的。然而对于其他情况来说,则要进行一些必要的类型转换。并且运算符的行为依赖于类型的转换的结果。从技术上来讲,加法操作符的行为表现为:
如果一个操作数是对象,则对象会遵循对象到原始值的转换规则为原始类值(参照3章8节3小节)。日期对对象toString()方法执行转换,其他对象则通过valueOf()方法执行转换(如果valueOf()方法返回一个原始值的话)。由于多数对象都不具备可用的valueOf()方法,因此他们会通过toString()方法来执行抓换
在进行了对象到原始值的转换后,如果其中一个操作鼠是字符串的话,另一个操作数也会转换为字符串。然后进行字符串连接。
否则,两个操作数都将转换为数字(或者NaN),然后进行加法操作。
这里有一些例子
1 + 2 //=>3 加法 "1" + "2" //=>"12" 字符串连接 "1" + 2 //=>"12"数字转换为字符串后进行字符串连接 1 + {} //=>"1[object object]":对象转换为字符串后进行字符串连接 true + true //=>2 布尔值转换为数字后做加法 2 + null //=>2 null转换为0后做加法 2 + undefined //=>NaN undefined转换为NaN做加法
最后,特别要注意的是。当加号运算符合字符串一起使用时,要考虑加法对运算顺序的影响。也就是说,运算结果是依赖于运算符的运算顺序的,比如
1 + 2 + "bmice" //=> "3 bmice" 1 + (2 + "bmice") => "12bmice"
ii.一元运算符
一元运算符作用于一个单独的操作数。并产生一个新值。在javascript中,一元运算符具有很高的优先级,而且都是右结合。本节讲述一元运算符(+,-,++和--),必要时,他们将操作转换为数字。需要注意的的是+ -是一元运算符,也是二元运算符、
一元加法+
一元加法运算符把操作数数转换为数字(或者NaN),并且返回这个转换后的数字。如果操作数本身就是数字,则直接返回这个数字。
一元减法-
当-号做一元运算符时,它会根据需要把操作数转换为数字,然后改变运算结果的符号、
递增++
递增“++”运算符对其操作数进行增量(+1)的操作,操作数一个左值(变量、数组元素或者对象属性)。运算符将操作数转换为数字。然后给数字加1、并将加1后的数值重新赋值给变量、数组元素或者对象属性。
递增++ 运算返回值依赖它对操作数的位置。
当操作符在操作数数之前,称为“前增量”(pre-increment)运算符,它对操作数进行增量计算,并返回计算后的值。
当操作符在操作数之后,称为"后增量"(post-increment)运算符,它对操作数进行增量计算,但返回为做增量计算的(unincremented)值。如
var i = 1,j = ++i //i和j的值都是2
var i = 1,j = i++; //i是2,j是1
需要注意的是,便打算++x并总和x=x+1完全一样,“++”运算符从不进行字符串连接操作,它总会将操作数转换为数字并增1.如果x是字符串“1”,++x的结果就是数字2,而x+1是字符串"11"
递减和递增的操作方式是同样的,它把操作数转换为数组,然后减1.
iii.位运算符
位运算符可以对数字表示的二进制数据进行更低层级的按位运算。尽管它们不是传统的纯数学运算,但这里也归类为算术运算符,因为他们作用于数值类型的操作并返回数字。
Atas ialah kandungan terperinci javascript基础课程之算数表达式定义用法详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!