ECMAScript:標(biāo)準(zhǔn)、核心
HTML 標(biāo)簽類型:block、inline、inline-block、table……
JS中的數(shù)據(jù)類型:數(shù)字(Number)、字符串(String)、布爾(boolean)、函數(shù)、對(duì)象(obj、[]、{}、null)、未定義(undefined)
typeof 判斷數(shù)據(jù)類型
- typeof操作符的操作數(shù)可以是變量也可以是數(shù)值字面量。
var i = 100;
alert( typeof i ); // number
alert(typeof 100); //number
var s = ' miaov ';
alert( typeof s ); // string
alert( s.length ); // 7
alert( s.charAt(3) ); // 'a'
var b = true; // 布爾值:true false
alert( typeof b ); // boolean
var arr=[5,6,9,3];
alert(typeof(arr)); //object
var obj = document;
alert( typeof obj ); // object 物體、東西、對(duì)象
var n = null;
alert( typeof n ); //object(從邏輯角度看,null值表示一個(gè)空對(duì)象指針,所以會(huì)返回object)
var a;
alert(typeof a); //undefined
數(shù)據(jù)類型轉(zhuǎn)換-number
- JS中有三個(gè)函數(shù)可以將非數(shù)值轉(zhuǎn)化為數(shù)值:Number(),ParesInt(),ParesFloat()。
- 區(qū)別:Number()可以用于任何數(shù)據(jù)類型,而另外兩個(gè)函數(shù)專門用于把字符串轉(zhuǎn)換成數(shù)值
Number()函數(shù)的轉(zhuǎn)換規(guī)則如下
- 如果是boolean值,true和false會(huì)分別轉(zhuǎn)化為1和0;
var a=true;
alert(Number(a)); // 1
- 如果只是數(shù)字值,只是簡(jiǎn)單的傳入和返回。
var a=100;
alert(Number(a)); // 100
- 如果是Null值,則會(huì)返回0;
var a = null;
// alert( Number(a) ); // 0
- 如果是undefined,函數(shù),json則都返回NaN;
var json = {};
// alert( Number(json) ); //NaN
var u;
// alert( Number(u) ); //NaN
var a3 = function (){ alert(1); };
// alert( Number(a3) ); // NaN
- 如果是字符串,遵循下列規(guī)則:
- 如果字符串中只包含數(shù)字(包括正負(fù),并且前導(dǎo)的零會(huì)被忽略),則將其轉(zhuǎn)換為十進(jìn)制數(shù)值
var a = '+100';
alert( a+100 ); // '100100'
alert( Number(a) ); // 100
- 如果字符串中包含有效的浮點(diǎn)數(shù),則將其轉(zhuǎn)化為對(duì)應(yīng)的浮點(diǎn)數(shù)
var a=2.123;
alert(Number(a)); //2.123
- 如果字符串中包含有效的十六進(jìn)制格式,如'0xf',則將其轉(zhuǎn)化為相同大小的十進(jìn)制數(shù)值
var a=0xAD;
alert(Number(a)); //173
- 如果是空字符串(不包含任何字符),則將其轉(zhuǎn)換為0;
var a1 = ' ';
// alert( Number(a1) ); // 0
- 其他格式的字符串將會(huì)被轉(zhuǎn)化為NaN;
parseInt()轉(zhuǎn)換規(guī)則如下:
- 它會(huì)忽略字符串前面的空格,直至找到第一個(gè)非空字符,如果第一字符不是數(shù)字符號(hào),則返回NaN。
- 空字符串也會(huì)被轉(zhuǎn)換為NaN。
- 從第一數(shù)字字符開始解析,直到解析到最后一個(gè)數(shù)字字符或者遇到一個(gè)非數(shù)字字符則會(huì)停止解析,相應(yīng)的小數(shù)點(diǎn)也不會(huì)被解析。
- 當(dāng)需要解析進(jìn)制數(shù)時(shí)最好在函數(shù)中添加第二個(gè)參數(shù):轉(zhuǎn)換時(shí)使用的基數(shù)(即多少進(jìn)制的數(shù)字)。
var num=parseInt('0xAF',16) //175
parseFloat()的與parseInt()的一些區(qū)別:
- 它解析的第一個(gè)小數(shù)點(diǎn)有效,第二個(gè)小數(shù)點(diǎn)無(wú)效。
- 前導(dǎo)0會(huì)被忽略,所以只能解析十進(jìn)制
//特殊的一些轉(zhuǎn)換
var a=parseFloat('0xAF'); //0
var b=parseFloat('3.125e7'); //31250000