JavaScript 定義了幾種數(shù)據(jù)類型? 哪些是原始類型?哪些是復(fù)雜類型?原始類型和復(fù)雜類型的區(qū)別是什么?
六種
數(shù)值(number):整數(shù)和小數(shù)
字符串(string):字符組成的文本
布爾值(boolean):true(真)和false(假)
undefined:表示“未定義”或不存在,即此處目前沒有任何值
unll:表示空缺,即此處應(yīng)該有一個(gè)值,但目前為空
對(duì)象(object):各種值組成的集合。對(duì)象有三個(gè)子類型狹義的對(duì)象(object),數(shù)組(array),函數(shù)(function)。
數(shù)值、字符串、布爾值稱為原始類型(primitive type)的值,即它們是最基本的數(shù)據(jù)類型,不能再細(xì)分了。
將對(duì)象稱為復(fù)雜類型(complex type)的值,因?yàn)橐粋€(gè)對(duì)象往往是多個(gè)原始類型的值的合成,可以看作是一個(gè)存放各種值的容器。
至于undefined和null,一般將它們看成兩個(gè)特殊值。
typeof和instanceof的作用和區(qū)別?
答:typeof 是用于返回一個(gè)數(shù)據(jù)其原始的數(shù)據(jù)類型,對(duì)于常見的幾大數(shù)據(jù)類型都可以用typeof 數(shù)據(jù)類型的方式進(jìn)行判斷.
答:instance 是用于判斷某個(gè)對(duì)象是不是構(gòu)造函數(shù)的一個(gè)實(shí)例,舉例來(lái)說(shuō)就是一個(gè)新聲明的變量是不是調(diào)用了構(gòu)造函數(shù)的內(nèi)置屬性或方法.
如何判斷一個(gè)變量是否是數(shù)字、字符串、布爾、函數(shù)
利用typeof就能判斷原始類型和函數(shù)。NaN是not a number,表示非數(shù)字,NaN和任何值都不相等,包括自己
NaN是什么? 有什么特別之處?
表示非數(shù)字,NaN和任何值都不相等,包括自己
如何把非數(shù)值轉(zhuǎn)化為數(shù)值?
三個(gè)方法
parseInt()將參數(shù)轉(zhuǎn)化為整數(shù)
parseFloat()將參數(shù)轉(zhuǎn)化成浮點(diǎn)數(shù)
number()將參數(shù)轉(zhuǎn)換成數(shù)字類型
==與===有什么區(qū)別
===是嚴(yán)格相等,==是值相等,js會(huì)在一些情況下進(jìn)行隱式的類型轉(zhuǎn)換再進(jìn)行比較。
break與continue有什么區(qū)別
break 用于強(qiáng)制退出循環(huán)體,執(zhí)行循環(huán)后面的語(yǔ)句continue 用于退出本次循環(huán),執(zhí)行下次循環(huán)
void 0 和 undefined在使用場(chǎng)景上有什么區(qū)別
undefined 在 ES5 中已經(jīng)是全局對(duì)象的一個(gè)只讀(read-only)屬性了,它不能被重寫。但是在局部作用域中,還是可以被重寫的。
void 運(yùn)算符通常只用于獲取 undefined 的原始值,一般使用 void(0)(等同于 void 0)。在上述情況中,也可以使用全局變量undefined 來(lái)代替(假定其仍是默認(rèn)值)。
而 void 可以給任何給定的表達(dá)式求值,并返回 undefined,并且 void 不可被重寫,因此void 0是在局部作用域中替代undefined的最佳選擇
1?
2 ? ?24 ? ?24 ? ?4
2
3 因?yàn)榭梢钥醋鯽++ 先是 然后+ a 所以 (a++)+a?
a++=1?
a=2 所以 輸出的值為3
numeber2?
因?yàn)閠ypeof 的級(jí)別高先輸出 typeof2 然后+ 2?
所以是number2
3
4
輸出結(jié)果為4,++運(yùn)算優(yōu)先于+運(yùn)算,理解為(a++)+b,a++結(jié)果為1,運(yùn)算為1+3=4。
4
for (var i=0; i< arr.length; i++) {console.log(arr[i]*arr[i]);}
5
for(var a in obj) {console.log(obj[a]);}
6
for(var a in obj) {console.log(obj[a]);}