基本 *** 作符(运算符)

基本 *** 作符(运算符),第1张

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、一元 *** 作符

只能 *** 作⼀个值的 *** 作符叫做⼀元 *** 作符。⼀元 *** 作符是ECMAScript 中最简单的 *** 作符。

1.递增++和递减-- 递增和递减 *** 作符直接借鉴⾃ C ,⽽且各有两个版本:前置型和后置型。顾名思义,前置型应该位于要 *** 作的变量之前,⽽后置型则应该位于要 *** 作的变量之后。因此,在使⽤前置递增 *** 作符给⼀个数值加1 时,要把两个加号( ++ )放在这个数值变量前⾯ . 执⾏前置递减 *** 作的⽅法也类似,结果会从⼀个数值中减去1 。使⽤前置递减 *** 作符时,要把两个减号(-- )放在相应变量的前⾯,如下所⽰:
var n = 100;
++n;     //把n累加⼀个⼀,相当于是n = n + 1;
--n;     //把n累加⼀个⼀,相当于是n = n - 1;
n++;     //把n累加⼀个⼀,相当于是n = n + 1;
n--      //把n累加⼀个⼀,相当于是n = n - 1;
2.前置和后置的区别 在没有赋值 *** 作之前,前置和后置是⼀样的,但是在赋值 *** 作时          递增或递减 *** 作符前置-----先累加或累减再赋值         递增或递减 *** 作符后置-----先赋值再累加和累减
var box = 100; 
// var age = ++box; //先对box 进⾏了计算再赋值 101 
var age = box++; //先赋值 再对box进⾏计算 100 
alert(age) 

//前++的⽰例: 
var a = 1; 
var b = ++a; 
//也可以写成这样 
var a = 1; 
var a = a + 1; 
var b = a; 
console.log(a,b) 
//后++的⽰例: 
var a = 1; 
var b = a++; 
//也可以写成这样 
var a = 1; 
var b = a; 
var a = a + 1; 
console.log(a,b)
3.其它的类型应用于一元 *** 作符的规则
var n = '90'; n++; //91 数值字符串会⾃动转换成数值 
var n = 'abc';n++; //NaN 字符串不能转换成数值的情况下计算,会得NaN 
var n = false;n++; //0 累加就是1 
var n = 9.9; n++; //10.9;

4.一元加和减 *** 作符 绝⼤多数开发⼈员对⼀元加和减 *** 作符都不会陌⽣,⽽且这两个 ECMAScript *** 作符的作⽤与数学书上 讲的完全⼀样。⼀元加 *** 作符以⼀个加号(+ )表⽰,放在数值前⾯,对数值不会产⽣任何影响, 如下⾯的例⼦所示:
var n = 100;
+n; //100 不会产⽣任何的变化
var n = '100';
console.log(typeof n) //STRING
+n; //100 不会产⽣任何的变化
console.log(typeof +n) //NUMBER
console.log(99 + +n)
var n = 'abc';
console.log(+n) //NaN
var n = 100; -n; //-100
var n = false; -n; //0
var n = 9.9; -n; //-9.9
加法和减法⼀般运于算术运算,也可以向上⾯⼀样进⾏类型转换 ; 总之: ⼀元加 *** 作符,放在数值前⾯,对数值不会产⽣任何影响
二、算术 *** 作符 1.加,减,乘,除,求模

如果在算术运算的值不是数值,哪么台后会使⽤Number()转型函数转换数值( 隐式转换

+

-

*

/

%  求模---用来求两个整数相除的余数。


三、关系 *** 作符 八个关系 *** 作符 (<)⼩于 (>)⼤于 (<=)⼩于等于 (>=)⼤于等于 (==)相等 (!=)不等 (===)全等(恒等) (!==)全不等(不恒等) 返回⼀个布尔值(true或false) 其他规则

1.如果两个 *** 作数都是数值,则执⾏数值比较。

2.如果两个 *** 作数都是字符串,则比较两个字符串对应的字符编码值

3.如果⼀个 *** 作数是数值,则将另一个 *** 作数转换为⼀个数值,然后执⾏数值比较。

4.如果⼀个 *** 作数是对象,则调用这个对象的valueOf()方法,⽤得到的结果按照前⾯的规则执⾏比较。

5.如果对象没有valueOf()⽅法,则调⽤toString()⽅法,并⽤得到的结果根据前⾯的规则执⾏比较。

6.如果⼀个 *** 作数是布尔值,则先将其转换为数值,然后再执⾏比较。

true默认为1,false默认为0

//1
var result = 5>3; //true
var result = 3>5; //false
var result = 5<3; //false
var result = 3<5; //true
//2
var result = '3' < 5; //true;
//3
var result = 'a' > 'b'; //false 'a' = 97 'b' = 98
//4-5
var result = 1 > {
toString:function(){
return 'a';
}
} //如果有toString()或valueOf()则返回 1 > 返回⼤于的值
document.write(result)
//6
var result = true<2; //true
相等和恒等的区别

(==)相等

判断值是否相等,但是不判断数据类型是否一致;满足前者输出true

(===)全等(恒等)

判断值是否相等,同时判断数据类型是否一致;两者都满足输出true


四、逻辑 *** 作符(布尔 *** 作符) 1. 逻辑非

逻辑非 *** 作符由⼀个叹号()表⽰

1. 如果 *** 作数是⼀个对象,返回 false 2. 如果 *** 作数是⼀个空字符串,返回 true 3. 如果 *** 作数是⼀个非空字符串,返回 false 4. 如果 *** 作数是数值 0 ,返回 true 5. 如果 *** 作数是任意非 0 数值(包括 Infinity ),返回 false 6. 如果 *** 作数是 null ,返回 true 7. 如果 *** 作数是 NaN ,返回 true 8. 如果 *** 作数是 undefined ,返回 true

下⾯⼏个例⼦展⽰了应⽤上述规则的结果:

//正常判断
var result = !(5>4) //false
//1.如果 *** 作数是⼀个对象,返回false;
var result = !{} //false

//2.如果 *** 作数是⼀个空字符串,返回true;
var result = !''; //true

//3.如果 *** 作数是⼀个非空字符串,返回false;
var result = !'hello world'; //false

//4.如果 *** 作数是数值0,返回true;
var result = !0; //true

//5.如果 *** 作数是任意非0 数值(包括Infinity),返回false;
var result = !Infinity; //false
var result = !-1; //false

//6.如果 *** 作数是null,返回true;
var result = !null; //true

//7.如果 *** 作数是NaN,返回true;
var result = !NaN; //true

//8.如果 *** 作数是undefined,返回true。
var result = !undefined; //true
document.write(result)
2. 逻辑与

逻辑与 *** 作符由两个和号(&&)表⽰

第⼀个 *** 作数 第⼆个 *** 作数 结果
true true true
true false false
false true false
false false false
它遵循下列规则: 1. 如果第⼀个 *** 作数是对象,则返回第⼆个 *** 作数 2. 如果第⼆个 *** 作数是对象,则只有在第⼀个 *** 作数的求值结果为 true 的情况下才会返回该对象 3. 如果两个 *** 作数都是对象,则返回第⼆个 *** 作数 4. 如果有⼀个 *** 作数是 null ,则返回 null 5. 如果有⼀个 *** 作数是 NaN ,则返回 NaN 6. 如果有⼀个 *** 作数是 undefined ,则返回 undefined
var result = {} && (5>4); //如果第⼀个 *** 作数是对象,则返回第⼆个 *** 作数;true
var result = (5>4) && {x:1} // [object Object]
var result = (5>6) && {x:1} // false
var result = {y:2} && {x:1} // 如果两个 *** 作数都是对象,则返回第⼆个 *** 作数;[object Object]{x:1}
var result = null && {x:1} //null
var result = undefined && {x:1} //undefined;
var result = undefined && null //undefined;
var result = null && undefined //null;
var result = (5>4) && null //null; null空对象
3. 逻辑或 逻辑或 *** 作符由两个竖线符号( || )表⽰
第⼀个 *** 作数 第⼆个 *** 作数 结果
true true true
true false true
false true true
false false false
它遵循下列规则:(同 逻辑与 1. 如果第⼀个 *** 作数是对象,则返回第⼀个 *** 作数 2. 如果第⼀个 *** 作数的求值结果为 false ,则返回第⼆个 *** 作数 3. 如果两个 *** 作数都是对象,则返回第⼀个 *** 作数 4. 如果两个 *** 作数都是 null ,则返回 null 5. 如果两个 *** 作数都是 NaN ,则返回 NaN 6. 如果两个 *** 作数都是 undefined ,则返回 undefined

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/927242.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-17
下一篇 2022-05-17

发表评论

登录后才能评论

评论列表(0条)

保存