第三节: JavaScript 运算符
一.运算符
运算符(Operators,也翻译为操作符),是发起运算的最简单形式。
运算符的分类见仁见智,我对运算符进行如下分类:
数学运算符(Arithmetic operators)
比较运算符(Comparison operators)
逻辑运算符(Logical operators)
赋值运算符(Assignment operators)
按位运算符 (Bitwise operators)
条件 (三元) 运算符(Conditional operator)
1. 数学运算符
加+ 减 - 乘 * 除 / 取余数 % 括号 ()
下面的结果都是3:
console.log(1 + 2);
console.log(8 - 5);
console.log(1.5 * 2);
console.log(12 / 4);
console.log(13 % 5); //13÷5=2……3 得几不重要,要的是余数
取余数这个运算,实际上也是除,要的是余数:
//取余数
console.log(12 % 3); //0
console.log(121 % 11); //0
console.log(5 % 8); //5
console.log(8 % 5); //3
console.log(5 % 5); //0
// 测试
console.log(1 % 0)
默认的计算顺序,先乘除,后加减。乘除取余是平级,先遇见谁,就算谁。
console.log(1 + 2 * 3); //7
console.log(1 + 2 * 3 % 3); //1
console.log(1 + 2 % 3 * 3); //7
我们可以用小括号来改变计算先后顺序,注意没有中括号和大括号,一律用小括号。
var a = 4 * (3 + (1 + 2) * 3);
console.log(a);
1.1. 隐式转换
所有带有字符串的运算都会尽可能的转为数字进行计算,加号比较特殊。(加好在字符串中有拼接的意思)
数学运算符的正统,是number和number的数学运算,结果是number。出于面试的考虑,有一些奇奇怪怪的数学运算.
* 发生转换
数学运算中,只有纯字符串、布尔值、null能够帮你进行隐式转换
//隐式转换:就是没有写parseInt()、parseFloat()自己帮你转格式
console.log(3 * "8"); //24
console.log("3" * "8"); //24
console.log("48" / "2"); //24
console.log("24" % 55); //24
console.log(3 * null); //0
//隐式转换的时候null将被转为0
console.log(3 * false); //0
//隐式转换的时候false将被转为0
console.log(3 * true); //3
//隐式转换的时候true将被转为1
* 不能隐式转换
不纯的字符串和undefined是不能帮你进行隐式转换的,结果都是NaN, 没办法计算
console.log(3 * "8天"); //NaN
//数学运算中,不纯的字符串没法隐式转换
console.log(3 * undefined); //NaN
//数学运算中,undefined不能进行隐式转换
加法的特殊性
加法比较特殊,因为+同时是加法和连字符的符号,所以加法在面对字符串的时候没有隐式转换,就是字符串拼接
数学运算,字符串拼接
任何数据类型加字符串都等于字符串
//加法对于字符串没有隐式转换
console.log(3 + "8"); //38
console.log(3 + undefined); //NaN
console.log(3 + null); //3
console