JavaScript(6) | 运算和运算符

107 阅读3分钟

算数运算

1. 加法 +

一、拼串

概念: 不同类型数据和字符串进行 操作会拼接字符串。

1、如果是字符进行加法,会 "拼串"

result = "123" + "456";
console.log("result=" + result); // result=123456
console.log("result的类型:" + typeof(result)); // result的类型:string

2、任何类型和字符加法运算会转化为字符串 然后再拼串

var result = "Hello" + 123; // 先把 123 变为 字符串 "123 " ,再拼串, 就是 result  =  "Hello"  +"123";
console.log("result=" + result); // result=Hello123
console.log("result的类型:" + typeof(result)); // result的类型:string

⚠️ 注: 拼串的结果 和 两个类型的拼接的表达形式无关而是和 字符串的本身表达形式有关

🚀T-测试 拼接字符串结果影响因素是否和 字符串形式 或 拼接形式有关。

1)、改变拼接形式

// 无明显空格
result = "Hello" + 123;
// 明显空格
result = "Hello"     +      123;
// 无空格
result = "Hello"+123;

结果都是result=Hello123

2)、改变字符串本身

result = "Hello    " + 123;

结果result=Hello 123

基于这一特性

所以可以使用这个方法把其他数据类型转化为 String类型

result =  "Hello"  + " ";

⚠️注: 加法的运算顺序,从左到右


2. 减法 -

除了加法中的拼串其余的运算都是把其他数据类型转化为 Number 数据类型

3. 乘法 *

1、基本规则

1、undefined 转化为 number相当于 NaN

var result = 2*undefined;
console.log("result=" + result); // result=NaN
console.log("result的类型=" + typeof(result)); // result的类型==number

2、null 转化为 number是 0

result = 2 * null ;
console.log("result=" + result); // result=0
console.log("result的类型=" + typeof(result)); // result的类型=number

任何值做 - * / 运算 都会变成 number 数据类型, 可以利用这个特点把其他数据类型转化为 number 数据类型。

4. 除法 /

...略

(完)

运算符

1. 一元运算符

- 号 对于非number 类型的值 ,加 - 号 会变成 number类型的值

如       a= true ;
         a  = -a ;
console.log(typeof  a);  // 输出number
consle.log(  a );   //输出   -1

可以对其他任意数据类型使用 + 此时的 + 为 一元运算符 ,来将其变成 number 数据类型 ,原理和Number () 函数一样

2. 逻辑运算符

1、!非

概念: 对非布尔值运算取,先将非布尔值 变为 布尔值类型再取反。可以将任意数据类型转化为 boolean类型,作用原理和Boolean()函数一样 ,但是属于隐式类型转换

2、&& 与

概念: 只要有一个false 就返回false ( 同1为1,有0为0 )。

理解: 如同爱情,只要有一个人不是真心的,都不是真爱, 双方都是真心的才是 真爱。

3、|| 或

概念: 只要有一个为true 就返回true( 同0为0,有1为1 )

理解: 如同亲情,只要有一个人爱你,皆为亲情

(完)


3. 非布尔值的或与运算符

方法: 先转换为布尔值类型再运算,并且返回原值。

两种情况

1、&& 运算

如果第一个值为true,则返回后面的值:

2&&3 第一个值 为 2为真,根据原则 同1为1,有0为0,不管是 同1情况 还是 有0情况都需要看 最后一个数才能判断结果。

a = 2&&3 // 3

如果第一个为false,则直接返回第一个值:

0&&3 第一个值为 0为假,根据原则 同1为1,有0为0,不管后面是真或假,结果都为假,所以看 第一个值就能判断结果。这个现象也称为 “短路”。

a =   0&&2; // 0

2、|| 运算

如果第一个值为true,就返回第一个值 [短路]

如果第一个值为false,就返回第二个值

小结:

  • &&运算: 短路的值是 false, 所以第一个值是 false 就返回第一个值.
  • ||运算: 短路的值是 true, 所以第一个值是 true, 就返回第一个值

(完)


4. 赋值运算符

复制操作: + = , -= , *= / , / = , % =

5. 关系运算符

暂略...