最高半折刷qq各种业务和钻(家里人自己开的,尽管放心,大家多捧捧场)

sking7

导航

javascript的类型转换,操作符介绍和运用

看到一篇文章讲类型转换

http://bonsaiden.github.com/JavaScript-Garden/zh/#types.casting

JavaScript 是弱类型语言,所以会在任何可能的情况下应用强制类型转换

// 下面的比较结果是:true
1 new Number(10) == 10; // Number.toString() 返回的字符串被再次转换为数字
2
3 10 == '10'; // 字符串被转换为数字
4 10 == '+10 '; // 同上
5 10 == '010'; // 同上
6 isNaN(null) == false; // null 被转换为数字 0
7 // 0 当然不是一个 NaN(译者注:否定之否定)

// 下面的比较结果是:false
10==010;
10=='-10';

ES5 提示:0 开头的数字字面值会被作为八进制数字解析。 而在 ECMAScript 5 严格模式下,这个特性被移除了。

为了避免上面复杂的强制类型转换,强烈推荐使用严格的等于操作符。 虽然这可以避免大部分的问题,但 JavaScript 的弱类型系统仍然会导致一些其它问题。

内置类型的构造函数

内置类型(比如 NumberString)的构造函数在被调用时,使用或者不使用 new 的结果完全不同。

new Number(10) === 10;     // False, 对象与数字的比较
Number(10) === 10; // True, 数字与数字的比较
new Number(10) + 0 === 10; // True, 由于隐式的类型转换


使用内置类型 Number 作为构造函数将会创建一个新的 Number 对象, 而在不使用 new 关键字的 Number 函数更像是一个数字转换器。

另外,在比较中引入对象的字面值将会导致更加复杂的强制类型转换。

最好的选择是把要比较的值显式的转换为三种可能的类型之一。

转换为字符串

''+10==='10';// true

将一个值加上空字符串可以轻松转换为字符串类型

转换为数字

+'10'===10;// true

使用一元的加号操作符,可以把字符串转换为数字。相当于0+‘10’===10,如果为-,则相当于0-‘10’

译者注字符串转换为数字的常用方法:

+'010' === 10
Number('010') === 10
parseInt('010', 10) === 10 // 用来转换为整数

+'010.2' === 10.2
Number('010.2') === 10.2
parseInt('010.2', 10) === 10

使用一元操作符进行转换很常见的一种操作。
例如jquery里的一段代码
    function now(){  
return +new Date; //把Date对象转化为相应的时间
}
一元运算符只有一个参数,即要操作的对象或值,它们是ECMA中最简单的运算符.

1.delete

delete运算符删除对以前定义的对象属性或方法的引用.

delete运算符不能删除开发者未定义的属性和方法.

注意:任何对象都有toString()方法,但是此时,若使用delete运算符,也是不可以的,因为不是开发者定义的.

2.void

void运算符对任何值都返回undefined.该操作符通常用于避免输出不该输出的值.

alert(void 'Str');//undefined

3.前增量/前减量运算符  ++i

4.后增量/后减量运算符 i++

5.一元加法,一元减法

(上述例子中讲到的)

只有在对于0x开头的字符串,一元运算符才能把它转换成相应进制的值.

例子:

        document.write(+'011'+'<br/>');//认为是10进制
        document.write(+'0xF');//认为是16进制

另外为运算符也可以进行强制类型。

| ~ ^  &  >>  << >>> 都是对整数的操作、、所以可以用来强制转换为整数

function strip(i) {return i^0;};

function strip(i) {return i>>0;};
 function strip(i) {return i | 0;}
 function strip(i) {return ~~i;}

转换为布尔型

通过使用 操作符两次,可以把一个值转换为布尔型。

!!'foo';   // true
!!'';      // false
!!'0';     // true
!!'1';     // true
!!'-1'     // true
!!{};      // true
!!true;    // true

下面讲下一元操作符在函数的应用。。。

先看一个函数
( function(){
	alert(window);
	alert(window===window.window);
})();

 这时让这个函数立即运行的方法。

经常看到别人在函数前面加个+号类似的符号。

其实这是用了一元操作符,让函数立即返回值。。

例如

void function(){
	alert(window);
	var count=0;
	alert(window===window.window);
}();

 当然void可以换成 + — ~ delete

具体有没有区别没有深究。。。

 


posted on 2011-10-13 22:23  G.N&K  阅读(213)  评论(0)    收藏  举报