進階2-數(shù)據(jù)類型運算符流程控制語句

1.JavaScript 定義了幾種數(shù)據(jù)類型? 哪些是原始類型?哪些是復(fù)雜類型?原始類型和復(fù)雜類型的區(qū)別是什么?

1.JavaScript定義了6種數(shù)據(jù)類型:
數(shù)值(number):整數(shù)和小數(shù)
字符串(string):字符組成的文本
布爾值(boolean):true(真)和false(假)
null:表示空缺,此處應(yīng)該有個值更哄,但目前為空
Undefined:表示不存在或沒定義邢笙,此處沒有任何值
對象(object):各種值組成的集合啸如。有三個子類型:狹義的對象(object),數(shù)組(Array),函數(shù)(function)

  • 我們將數(shù)值、字符串氮惯、布爾值稱為原始類型(primitive type)的值叮雳,即它們是最基本的數(shù)據(jù)類型想暗,不能再細(xì)分了。
  • 將對象稱為合成類型(complex type)的值帘不,因為一個對象往往是多個原始類型的值的合成说莫,可以看作是一個存放各種值的容器。
  • undefined和null寞焙,一般將它們看成兩個特殊值储狭。

2.typeof和instanceof的作用和區(qū)別?

  • typeof用于檢測變量的基本類型,一般返回這些結(jié)果:number,boolean,string,function,object,undefined
  • instanceof 用于判斷一個變量是否某個對象的實例捣郊。
  • 區(qū)別:typeof是判斷變量是什么基本類型的辽狈;
    instanceof是判斷對象到底是什么類型的;

3.如何判斷一個變量是否是數(shù)字呛牲、字符串刮萌、布爾、函數(shù)

  • 判斷數(shù)字 typeof 123 ----------- number
  • 判斷字符串 typeof "abc" ------------ string
  • 判斷布爾值 typeof true ----------- boolean
  • 判斷函數(shù) typeof function(){ } ----------- function

4.NaN是什么? 有什么特別之處?

NaN含義是not a number 娘扩,表示非數(shù)字着茸,NaN和任何值都不相等,包括自己
NaN === NaN ---------- false

5.如何把非數(shù)值轉(zhuǎn)化為數(shù)值?

  1. 轉(zhuǎn)換函數(shù):
    js提供了parseInt()和parseFloat()兩個轉(zhuǎn)換函數(shù)琐旁。前者把值轉(zhuǎn)換成整數(shù)涮阔,后者把值轉(zhuǎn)換成浮點數(shù)。只有對String類型調(diào)用這些方法灰殴,這兩個函數(shù)才能正確運行敬特;對其他類型返回的都是NaN(Not a Number)。
    一些示例如下:
parseInt("1234blue"); //returns 1234
parseInt("0xA"); //returns 10
parseInt("22.5"); //returns 22
parseInt("blue"); //returns NaN

2.強制類型轉(zhuǎn)換
Number()——把給定的值轉(zhuǎn)換成數(shù)字(可以是整數(shù)或浮點數(shù))验懊;

6.==與===有什么區(qū)別

我們知道可以使用==或===判斷兩個值的相等性擅羞,其中區(qū)別相信大家清楚,===是嚴(yán)格意義的相等义图,只需注意NaN和NaN不等就行了减俏。
而使用==的時候,javascript會幫我們做類型轉(zhuǎn)換碱工,造成一些匪夷所思的結(jié)果娃承,那么使用==的時候會在哪些情況下做類型轉(zhuǎn)換,又會換成什么樣子怕篷?
如果兩個值類型相同历筝,則執(zhí)行嚴(yán)格相等的運算
如果兩個值的類型不同
如果一個是null,一個是undefined廊谓,那么相等
如果一個是數(shù)字梳猪,一個是字符串,先將字符串轉(zhuǎn)為數(shù)字蒸痹,然后比較
如果一個值是true/false則將其轉(zhuǎn)為1/0比較
如果一個值是對象春弥,一個是數(shù)字或字符串呛哟,則嘗試使用valueOf和toString轉(zhuǎn)換后比較
其它就不相等了

null==undefined;  //true
NaN==NaN;  //false 
"1"==true;  //true 
true == 1;  //ture  true會轉(zhuǎn)換成number,也就是1
true == 2; //false  當(dāng)然 1 不等于 2

區(qū)別:
對于string,number等基礎(chǔ)類型匿沛,==和===是有區(qū)別的
不同類型間比較扫责,==之比較“轉(zhuǎn)化成同一類型后的值”看“值”是否相等,===如果類型不同逃呼,其結(jié)果就是不等
同類型比較鳖孤,直接進行“值”比較,兩者結(jié)果一樣
對于Array,Object等高級類型抡笼,==和===是沒有區(qū)別的
進行“指針地址”比較
基礎(chǔ)類型與高級類型苏揣,==和===是有區(qū)別的
對于==,將高級轉(zhuǎn)化為基礎(chǔ)類型蔫缸,進行“值”比較
因為類型不同腿准,===結(jié)果為false

7.break與continue有什么區(qū)別

  • break 用于強制退出循環(huán)體,執(zhí)行循環(huán)后面的語句
  • continue 用于退出本次循環(huán)拾碌,執(zhí)行下次循環(huán)

8.void 0 和 undefined在使用場景上有什么區(qū)別

undefined是一個全局屬性,表示未定義或定義了沒有賦值街望。

void是一個一元運算符校翔,不管傳入什么參數(shù)都會返回undefined。

void操作符是在ECMAScript v1中定義的灾前,而undefined是在ECMAScript v5中定義的防症。

使用void 0代替undefined是為了兼容性以及預(yù)防代碼的不規(guī)范(自己修改undefined的值)。

9.以下代碼的輸出結(jié)果是?為什么?

console.log(1+1);   \\ 2  運算符兩邊都是數(shù)值哎甲,就進行加法運算蔫敲,返回數(shù)值2
console.log("2"+"4");  \\ "24"  運算符兩邊是字符串,+就是將字符串連接炭玫,返回字符串 "24"
console.log(2+"4");     \\ "24"  運算符一邊是字符串奈嘿,+就是將字符串和前面的數(shù)值2連接,返回字符串 "24"
console.log(+"4");      \\4         在只有一個字符串參數(shù)的時候會嘗試將其轉(zhuǎn)換為數(shù)字

10. 以下代碼的輸出結(jié)果是?

var a = 1;  
a+++a;   // 3吞加, ++運算符的優(yōu)先級比+運算符高裙犹,相當(dāng)于(a++)+a,(a++)先運算再賦值衔憨,所以a++結(jié)束后叶圃,a=2,1+2=3
 typeof a+2; //"number2"践图,相當(dāng)于(typeof a)+2,(typeof a)的值是"number","number"+2的結(jié)果是"number2"

11. 以下代碼的輸出結(jié)果是? 為什么

 var a = 1;
 var b = 3;
 console.log( a+++b ); //4  a+++b相當(dāng)于(a++)+b, a++ 先運算再賦值掺冠,也就是當(dāng)前的a++還是1,那么1+3=4

12. 遍歷數(shù)組码党,把數(shù)組里的打印數(shù)組每一項的平方

var arr = [3,4,5];
for(var i=0;i<arr.length;i++){
    console.log(arr[i]*arr[i]);
}

13. 遍歷 JSON, 打印里面的值

var obj = {
 name: 'hunger', 
 sex: 'male', 
 age: 28 
};
for(i in obj){
    console.log(obj[i]);
}

14. 以下代碼輸出結(jié)果是? 為什么 (選做題目)

var a = 1, b = 2, c = 3;
var val = typeof a + b || c >0
console.log(val)   

輸出結(jié)果為字符串"number2"
val = typeof a + b || c >0德崭,=的運算符最低悍及,所以相當(dāng)于typeof a + b || c >0賦值給val,typeof a + b || c >0相當(dāng)于(typeof a) + b || c > 0, || 運算符優(yōu)先級低,所以最后算接癌,typeof a的結(jié)果是'number',number + b的結(jié)果是'number2'心赶,由于||的前一條運算結(jié)果是true,所以||后不計算缺猛,(typeof a) + b || c > 0返回'number2',然后賦值給val

var d = 5;
var data = d ==5 && console.log('bb')
console.log(data)

先輸出字符串'bb'缨叫,后輸出undefined
&&優(yōu)先級較低, d==5 先執(zhí)行荔燎,返回true耻姥,所以后面的console.log('bb')會執(zhí)行,執(zhí)行后輸出'bb'并返回undefined有咨, true && undefined結(jié)果是undefined


var data2 = d = 0 || console.log('haha')
console.log(data2)

先輸出字符串"haha"琐簇,再輸出undefined
=運算符優(yōu)先級最低,所以先執(zhí)行 0 || console.log("haha"),結(jié)果是undefined座享,得到結(jié)果后婉商,再賦值給d與data2

var x = !!"Hello" + (!"world", !!"from here!!");
console.log(x)

輸出數(shù)字2
!!"Hello"結(jié)果是true, (!"world",!!"from here")返回的是!!"from here!!"的結(jié)果(結(jié)果為true)渣叛,true + true的結(jié)果是2

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末丈秩,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子淳衙,更是在濱河造成了極大的恐慌蘑秽,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件箫攀,死亡現(xiàn)場離奇詭異肠牲,居然都是意外死亡,警方通過查閱死者的電腦和手機靴跛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門缀雳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人汤求,你說我怎么就攤上這事俏险。” “怎么了扬绪?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵竖独,是天一觀的道長。 經(jīng)常有香客問我挤牛,道長莹痢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮竞膳,結(jié)果婚禮上航瞭,老公的妹妹穿的比我還像新娘。我一直安慰自己坦辟,他們只是感情好刊侯,可當(dāng)我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著锉走,像睡著了一般滨彻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上挪蹭,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天亭饵,我揣著相機與錄音,去河邊找鬼梁厉。 笑死辜羊,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的词顾。 我是一名探鬼主播八秃,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼计技!你這毒婦竟也來了喜德?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤垮媒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后航棱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體睡雇,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年饮醇,在試婚紗的時候發(fā)現(xiàn)自己被綠了它抱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡朴艰,死狀恐怖观蓄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情祠墅,我是刑警寧澤侮穿,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布,位于F島的核電站毁嗦,受9級特大地震影響亲茅,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一克锣、第九天 我趴在偏房一處隱蔽的房頂上張望茵肃。 院中可真熱鬧,春花似錦袭祟、人聲如沸验残。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽您没。三九已至,卻和暖如春想鹰,著一層夾襖步出監(jiān)牢的瞬間紊婉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工辑舷, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留喻犁,地道東北人。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓何缓,卻偏偏與公主長得像肢础,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子碌廓,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容