提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、一元 *** 作符
只能 *** 作⼀个值的 *** 作符叫做⼀元 *** 作符。⼀元 *** 作符是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 |
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 |
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)