一元运算符
一元运算符只有一个参数,即要操作的对象或值。它们是ECMAScript中最简单的运算符。
1. delete
delete运算符删除对以前定义的对象属性或方法的引用。
var o = new Object();
o.name = "jack";
alert(o.name);
delete o.name;
alert(o.name);
delete运算符不能删除开发者未定义的属性和方法。
2. void
void运算符对任何值都返回undefined。该运算符通常用于避免输出不应该输出的值, 如:
<a href="javascript:window.open('about:blank')">click me</a>
返回[object Window]
<a href="javascript:void(window.open('about:blank'))">click me</a>
避免返回[object Window]
记住,没有返回值的函数真正返回的都是undefined。
位运算符
1. 重温整数
ECMAScript整数有两种类型,即有符号整数(允许用正数和负数)和无符号整数(只允许用正数)。
在ECMAScript中,所有整数字面量默认都是有符号整数。
记住,在处理有符号整数时,开发者不能访问位31。
记住,所有整数字面量都默认存储为有符号整数。只有用ECMAScript的位运算符才能创建无符号整数。
2. 位运算NOT
NOT是三步的处理过程:
(1) 把运算数转换成32位数字;
(2) 把二进制形式转换成它的二进制反码;
(3) 把二进制反码转换成浮点数。
位运算NOT实质上是对数字求负,然后减1,因此25变为-26。
var iNum1 = 25;
var iNum2 = ~iNum1;//var iNum2 = -iNum1-1; iNum2 = >-26
Boolean运算符
1. 逻辑NOT
在ECMAScript中,逻辑NOT运算符与C和Java中的逻辑NOT运算符相同,都由感叹号(!)表示。
与逻辑OR和逻辑AND运算符不同的是,逻辑NOT运算符返回的一定是Boolean值。逻辑NOT运算符的行为如下:
如果运算数是对象,返回false。
如果运算数是数字0,返回true。
如果运算数是0以外的任何数字,返回false。
如果运算数是null,返回true。
如果运算数是NaN,返回true。
如果运算数是undefined,发生错误。
2. 逻辑AND运算符
如果某个运算数不是原始的Boolean型值,逻辑AND运算并不一定返回Boolean值:
如果一个运算数是对象,另一个是Boolean值,返回该对象。
如果两个运算数都是对象,返回第二个对象。
如果某个运算数是null,返回null。
如果某个运算数是NaN,返回NaN。
如果某个运算数是undefined,发生错误。
3. 逻辑OR运算符
与逻辑AND运算符相似,如果某个运算数不是Boolean值,逻辑OR运算并不一定返回Boolean值:
如果一个运算数是对象,另一个是Boolean值,返回该对象。
如果两个运算数都是对象,返回第一个对象。
如果某个运算数是null,返回null。
如果某个运算数是NaN,返回NaN。
如果某个运算数是undefined,发生错误。
等性运算符
1. 等号和非等号
在ECMAScript中,等号由双等号(= =)表示,当且仅当两个运算数相等时,它返回true。
非等号是感叹号加等号(!=),当且仅当两个运算数不相等时,它返回true。
为确定两个运算数是否相等,这两个运算符都会进行类型转换。
执行类型转换的基本规则如下:
如果一个运算数是Boolean值,在检查相等性之前,把它转换成数字值。false转换成0,true转换成1。
如果一个运算数是字符串,另一个是数字,在检查相等性之前,要尝试把字符串转换成数字。
如果一个运算数是对象,另一个是字符串,在检查相等性之前,要尝试把对象转换成字符串(调用toString()方法)。
如果一个运算数是对象,另一个是数字,在检查相等性之前,要尝试把对象转换成数字。
对象 -》 字符串-》 数字
在进行比较时,该运算符还遵守下列规则:
值null和undefined相等。
在检查相等性时,不能把null和undefined转换成其他值。
如果某个运算数是NaN,等号将返回false,非等号将返回true。
重要提示:即使两个运算数都是NaN,等号仍然返回false,因为根据规则,NaN不等于NaN。
如果两个运算数都是对象,那么比较的是它们的引用值。如果两个运算数指向同一个对象,那么等号返回true,否则两个运算数不等。
2. 全等号和非全等号
全等号由三个等号(= = =)表示,只有在无需类型转换运算数就相等的情况下,才返回true。
一元运算符只有一个参数,即要操作的对象或值。它们是ECMAScript中最简单的运算符。
1. delete
delete运算符删除对以前定义的对象属性或方法的引用。
var o = new Object();
o.name = "jack";
alert(o.name);
delete o.name;
alert(o.name);
delete运算符不能删除开发者未定义的属性和方法。
2. void
void运算符对任何值都返回undefined。该运算符通常用于避免输出不应该输出的值, 如:
<a href="javascript:window.open('about:blank')">click me</a>
返回[object Window]
<a href="javascript:void(window.open('about:blank'))">click me</a>
避免返回[object Window]
记住,没有返回值的函数真正返回的都是undefined。
位运算符
1. 重温整数
ECMAScript整数有两种类型,即有符号整数(允许用正数和负数)和无符号整数(只允许用正数)。
在ECMAScript中,所有整数字面量默认都是有符号整数。
记住,在处理有符号整数时,开发者不能访问位31。
记住,所有整数字面量都默认存储为有符号整数。只有用ECMAScript的位运算符才能创建无符号整数。
2. 位运算NOT
NOT是三步的处理过程:
(1) 把运算数转换成32位数字;
(2) 把二进制形式转换成它的二进制反码;
(3) 把二进制反码转换成浮点数。
位运算NOT实质上是对数字求负,然后减1,因此25变为-26。
var iNum1 = 25;
var iNum2 = ~iNum1;//var iNum2 = -iNum1-1; iNum2 = >-26
Boolean运算符
1. 逻辑NOT
在ECMAScript中,逻辑NOT运算符与C和Java中的逻辑NOT运算符相同,都由感叹号(!)表示。
与逻辑OR和逻辑AND运算符不同的是,逻辑NOT运算符返回的一定是Boolean值。逻辑NOT运算符的行为如下:
如果运算数是对象,返回false。
如果运算数是数字0,返回true。
如果运算数是0以外的任何数字,返回false。
如果运算数是null,返回true。
如果运算数是NaN,返回true。
如果运算数是undefined,发生错误。
2. 逻辑AND运算符
如果某个运算数不是原始的Boolean型值,逻辑AND运算并不一定返回Boolean值:
如果一个运算数是对象,另一个是Boolean值,返回该对象。
如果两个运算数都是对象,返回第二个对象。
如果某个运算数是null,返回null。
如果某个运算数是NaN,返回NaN。
如果某个运算数是undefined,发生错误。
3. 逻辑OR运算符
与逻辑AND运算符相似,如果某个运算数不是Boolean值,逻辑OR运算并不一定返回Boolean值:
如果一个运算数是对象,另一个是Boolean值,返回该对象。
如果两个运算数都是对象,返回第一个对象。
如果某个运算数是null,返回null。
如果某个运算数是NaN,返回NaN。
如果某个运算数是undefined,发生错误。
等性运算符
1. 等号和非等号
在ECMAScript中,等号由双等号(= =)表示,当且仅当两个运算数相等时,它返回true。
非等号是感叹号加等号(!=),当且仅当两个运算数不相等时,它返回true。
为确定两个运算数是否相等,这两个运算符都会进行类型转换。
执行类型转换的基本规则如下:
如果一个运算数是Boolean值,在检查相等性之前,把它转换成数字值。false转换成0,true转换成1。
如果一个运算数是字符串,另一个是数字,在检查相等性之前,要尝试把字符串转换成数字。
如果一个运算数是对象,另一个是字符串,在检查相等性之前,要尝试把对象转换成字符串(调用toString()方法)。
如果一个运算数是对象,另一个是数字,在检查相等性之前,要尝试把对象转换成数字。
对象 -》 字符串-》 数字
在进行比较时,该运算符还遵守下列规则:
值null和undefined相等。
在检查相等性时,不能把null和undefined转换成其他值。
如果某个运算数是NaN,等号将返回false,非等号将返回true。
重要提示:即使两个运算数都是NaN,等号仍然返回false,因为根据规则,NaN不等于NaN。
如果两个运算数都是对象,那么比较的是它们的引用值。如果两个运算数指向同一个对象,那么等号返回true,否则两个运算数不等。
2. 全等号和非全等号
全等号由三个等号(= = =)表示,只有在无需类型转换运算数就相等的情况下,才返回true。