1岩灭、parseInt("1234blue"); //returns 1234
parseInt("0xA"); //returns 10
parseInt("22.5"); //returns 22
parseInt("blue"); //returns NaN
parseInt("abc122");//returns NaN
parseInt()方法還有基模式,可以把二進制勋又、八進制、十六進制或其他任何進制的字符串轉(zhuǎn)換成整數(shù)换帜⌒ㄈ溃基是由parseInt()方法的第二個參數(shù)指定的,所以要解析十六進制的值惯驼,需如下調(diào)用parseInt()方法:
parseInt("AF", 16); //returns 175
當然蹲嚣,對二進制、八進制祟牲,甚至十進制(默認模式)隙畜,都可以這樣調(diào)用parseInt()方法:
parseInt("10", 2); //returns 2
parseInt("10", 8); //returns 8
parseInt("10", 10); //returns 10
如果十進制數(shù)包含前導(dǎo)0,那么最好采用基數(shù)10说贝,這樣才不會意外地得到八進制的值议惰。例如:
parseInt("010"); //returns 8
parseInt("010", 8); //returns 8
parseInt("010", 10); //returns 10
在這段代碼中,兩行代碼都把字符串 "010 "解析成了一個數(shù)字乡恕。第一行代碼把這個字符串看作八進制的值言询,解析它的方式與第二行代碼(聲明基數(shù)為8)相同。最后一行代碼聲明基數(shù)為10傲宜,所以iNum3最后等于10倍试。
2、parseFloat("1234blue"); //returns 1234.0
parseFloat("0xA"); //returns NaN
parseFloat("22.5"); //returns 22.5
parseFloat("22.34.5"); //returns 22.34
parseFloat("0908"); //returns 908
parseFloat("blue"); //returns NaN
3蛋哭、Boolean(""); //false – empty string
Boolean("hi"); //true – non-empty string
Boolean(100); //true – non-zero number
Boolean(null); //false - null
Boolean(0); //false - zero
Boolean(new Object()); //true – object
4县习、Number(false) 0
Number(true) 1
Number(undefined) NaN
Number(null) 0
Number( "5.5 ") 5.5
Number( "56 ") 56
Number( "5.6.7 ") NaN
Number(new Object()) NaN
Number(100) 100
發(fā)現(xiàn)了一個很好玩的事情:
123-'abc';//NaN
123+'abc';//"123abc"
這里一個是加(+)當作了字符串的拼接;減(-)則直接當作字符串谆趾,也就是非數(shù)值躁愿,故打印出NaN。
還有一個問題:
var 定義和沒有var定義的變量:
沒有用var定義的則表明是全局變量(不推薦)
var a =100;delete a ;a;
//100
b =100;delete b ;b;
//Uncaught ReferenceError: b is not defined沪蓬;報錯
var x = 1;
y = 4;
console.log(x);//1
console.log(y);//4
console.log(window.x);//1
console.log(window.y);//4
簡單測試下可以知道定義的x和y都被掛載在window對象上,變?yōu)閣indow下的屬性,這并不能說明什么...
?
1
2
3
4
delete x;
delete y;
console.log(window.x);//1
console.log(window.y);//undefined
再看看執(zhí)行上面代碼之后x屬性沒有被刪除,y被刪除了,這是區(qū)別就來了
在通過var進行定義后的變量不能被delete刪除,這是什么原因?ECMAScript 5標準中彤钟,可以通過Object.getOwnPropertyDescriptor()來獲取對象自身某個property的屬性信息:
?
1
2
console.log(Object.getOwnPropertyDescriptor(window,"x"));
console.log(Object.getOwnPropertyDescriptor(window,"y"));
得到如下信息:
[圖片上傳中。跷叉。逸雹。(1)]
當不使用var進行定義是,變量默認的configurable為true,可以進行delete等命令進行操作,而當var在定義一個全局變量的時候configurable 變?yōu)榱薴alse,即不會被delete刪除.
由于變量聲明自帶不可刪除屬性,比較var num = 1 跟 num = 1云挟,前者是變量聲明梆砸,帶不可刪除屬性,因此無法被刪除园欣;后者為全局變量的一個屬性帖世,因此可以從全局變量中刪除。