9.Jav运算符JavaScript中的运算符
运算符是处理数据的基本方法,用来从现有的数据得到新的数据,JavaScript与其他的编程语言一样,提供了多种运算符。
1.加法运算符
‘+’运算符在JavaScript中有两种运算,既可以处理算术的加法,可以用于字符串的连接,他们都写成+。
// 加法
1 + 1 // 2
true + true // 2
1 + true // 2
// 字符串连接
'1' + '1' // "11"
'1.1' + '1.1' // "1.11.1"
下面的写法可以将一个值改为字符串:
x + ''
加法运算符会将其他类型的值,自动转化为字符串,然后再执行连接运算。
[1, 2] + [3]
// "1,23"
// 等同于
String([1, 2]) + String([3])
// '1,2' + '3'
2.算术运算符
JavaScript中提供了9个算术运算符,用来完成基本的算术运算。
- 加法运算符(Addition):x + y
- 减法运算符(Subtraction): x y
- 乘法运算符(Multiplication): x * y
- 除法运算符(Division):x / y
- 余数运算符(Remainder):x % y
- 自增运算符(Increment):++x 或者 x++
- 自减运算符(Decrement):--x 或者 x--
- 数值运算符(Convert to number): +x
- 负数值运算符(Negate):-x
3.自增和自减
自增和自减运算符,是一元运算符,只需要一个运算子。它们的作用是将运算子首先转为数值,然后加上1或者减去1。它们会修改原始变量。
var x = 1;
++x // 2
x // 2
--x // 1
x // 1
4.字符串的比较
字符串按照字典的数据进行比较。
'cat' > 'dog' // false
'cat' > 'catalog' // false
5.JavaScript中,提供两个相等的运算符:和=
简单的来说,他们的区别就是比较两个值是否相等,=比较值相等的时候还需要类型相等。
1.不同类型的值
1 === "1" // false
true === "true" // false
2.同一类型的原始类型值
1 === 0x1 // true
NaN === NaN // false
+0 === -0 // true
3.同一类型的复合类型值
{} === {} // false
[] === [] // false
(function (){} === function (){}) // false
上面代码分别比较两个空对象、两个空数组、两个空函数,结果都是不相等。原因是对于复合类型的值,严格相等运算比较的是,它们是否引用同一个内存地址,而运算符两边的空对象、空数组、空函数的值,都存放在不同的内存地址,结果当然是false。
如果两个变量引用同一个对象,则它们相等。
var v1 = {};
var v2 = v1;
v1 === v2 // true
注意,对于两个对象的比较,严格相等运算符比较的是地址,而大于或小于运算符比较的是值。
new Date() > new Date() // false
new Date() < new Date() // false
new Date() === new Date() // false
上面的三个表达式,前两个比较的是值,最后一个比较的是地址,所以都返回false。
6.undefined 和 null
undefined和null与自身严格相等。
undefined === undefined // true
null === null // true
由于变量声明后默认值是undefined,因此两个只声明未赋值的变量是相等的。
var v1;
var v2;
v1 === v2 // true
7.相等运算符,如下
1 == true // true
// 等同于 1 === 1
0 == false // true
// 等同于 0 === 0
2 == true // false
// 等同于 2 === 1
2 == false // false
// 等同于 2 === 0
'true' == true // false
// 等同于 Number('true') === Number(true)
// 等同于 NaN === 1
'' == 0 // true
// 等同于 Number('') === 0
// 等同于 0 === 0
'' == false // true
// 等同于 Number('') === Number(false)
// 等同于 0 === 0
'1' == true // true
// 等同于 Number('1') === Number(true)
// 等同于 1 === 1
'\n 123 \t' == 123 // true
// 因为字符串转为数字时,省略前置和后置的空格
8.三元运算符
三元条件运算符用问号(?)和冒号(:),分隔三个表达式。如果第一个表达式的布尔值为true,则返回第二个表达式的值,否则返回第三个表达式的值。
't' ? 'hello' : 'world' // "hello"
0 ? 'hello' : 'world' // "world"
张磊,技术菜鸟一枚,在web开发中一直苦苦挣扎,追求上岸!
联系QQ:1908002007
有技术问题可以随时联系,闲聊也是可以的!欢迎打扰!