首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

五 表达式和操作符

2012-11-10 
5 表达式和操作符??? ?下面的准则要牢记(有的时候觉得这个规则蛮麻烦的)?? ?? ? [1] 如果左右两边是同

5 表达式和操作符

?

?? ?下面的准则要牢记(有的时候觉得这个规则蛮麻烦的)

?? ===

?? ? [1] 如果左右两边是同一个对象的reference,那么返回true。这种情况都是false:

?? ? var now = new Date();

?? ? var arr1 = [now];

?? ? var arr2 = [now];

?? ? arr1 === arr2 (false)

?? ? [2] 如果左右两边是数字,那么它们的值相等就返回true。可是注意一下,1 === 1.0 (true);如果其中只要有一个是NaN,那么结果一定是false。

?? ? [3] 如果是str,那么只要内容一样就是true。可是,这里所谓的一样是忽略编码特征的,要加入带编码的比较,用localeCompare。

?? ? [4] true === true (true) false === false (true) undefined === undefined (true) null === null (true)

undefined === null (false)

?

?? ? ==

?? ? [1] 数字和str的 == 和 === 是一至的,除了下面这种:undefined == null (true)

?? ? [2] 如果一个是str,一个是数字,就会把str转成数字,然后再比较

?? ? [3] 如果任何一个是true或者false,会将它们转成1或者0,然后再比较

?? ? [4] object,会先用valueOf()再用toString()去把它们转成primitive类型的比较。Date会直接调用toString()转成primitive的进行比较

?? ? [5] 其他都应该==都是false

var a = 5/2;undefineda;2.5var b = 2.5;undefineda == b;truea === b;truevar str1 = "I love u";undefinedvar str2 = "I love " + "u";undefinedstr1 == str2;truestr1 === str2;truevar arr1 = [1,2,3];undefinedvar arr2 = [1,2,3];undefinedarr1 == arr2;falsearr1 === arr2;falsevar c = 0/0;undefinedc;NaNc == a;falsec === a;falseisNaN(c);truevar now = new Date();undefinedvar arr2 = [now];undefinedvar arr3 = [now];undefinedarr2 === arr3;falsearr2 == arr3;falseundefined = undefined;undefinedundefined == undefined;trueundefined === undefined;truenull == null;truenull === null;truenull == undefined;truenull === undefined;falsenow.toString();"Sat Apr 18 2009 08:23:08 GMT+0800 (CST)"var yessterday = new Date(2009,04,17);undefinedyesterday;null1.0 === 1;true0/0 === 0/0false

?

比较操作符

比较操作符也要考虑转换的问题。首先基本原则就是尽量往数字上转,除了一种情况,就是两个都是str,那么它们就进行字符比较。另外NaN和任何东西比较都是false。

?

Str操作符

大部分都是很正常的理解,下面一种除外

var str = "this string is " + 1 +2; //this string is 3

这明显和+的结合律矛盾,不是从左至右的,要特别注意。

?

delete操作符

它只是删除reference,并没有删除reference指向的内容。

var my = new Object( );    // Create an object named "my"my.hire = new Date( );     // my.hire refers to a Date objectmy.fire = my.hire;        // my.fire refers to the same objectdelete my.hire;           // hire property is deleted; returns truedocument.write(my.fire);  // But my.fire still refers to the Date object
?

热点排行