數(shù)據(jù)類型運(yùn)算符流程控制語句

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

  • JavaScript的數(shù)據(jù)類型:
  • 數(shù)值(number):整數(shù)和小數(shù)(比如1和3.14)
  • 字符串(string):字符組成的文本(比如"Hello World")
  • 布爾值(boolean):true(真)和false(假)兩個(gè)特定值
  • undefined:表示“未定義”或不存在,即此處目前沒有任何值
  • null:表示空缺癌椿,即此處應(yīng)該有一個(gè)值是鬼,但目前為空
  • 對(duì)象(object):各種值組成的集合
  • 原始類型
    原始類型是最基本的數(shù)據(jù)類型,不能再細(xì)分了袱贮。數(shù)值鸠真、字符串呼巷、布爾值都是原始類型。
  • 復(fù)雜類型是多個(gè)原始類型的值的合成捞烟,可以看作是一個(gè)存放各種值的容器薄声。“對(duì)象”被稱為復(fù)雜類型题画。
  • 原始類型和復(fù)雜類型的區(qū)別
    如上述

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

  • typeof運(yùn)算符可以返回一個(gè)值的數(shù)據(jù)類型默辨,可能有以下結(jié)果。
  • 原始類型
    數(shù)值苍息、字符串缩幸、布爾值分別返回number、string竞思、boolean表谊。
typeof 123 // "number"
typeof '123' // "string"
typeof false // "boolean"
  • 函數(shù)
    函數(shù)返回function
function f() {}
typeof f
// "function"
  • undefind
    undefined返回undefined。
typeof undefined
// "undefined"
typeof undefined 范例

利用這一點(diǎn)盖喷,typeof可以用來檢查一個(gè)沒有聲明的變量爆办,而不報(bào)錯(cuò)。

v  // ReferenceError: v is not defined
typeof v // "undefined"

實(shí)際編程中课梳,這個(gè)特點(diǎn)通常用在判斷語句距辆。
// 錯(cuò)誤的寫法

if (v) { }  // ReferenceError: v is not defined

// 正確的寫法

if (typeof v === "undefined") { }

除此以外余佃,其他情況都返回object。

typeof window // "object"
typeof {} // "object"
typeof [] // "object"
typeof null // "object"
  • instanceof用于判斷一個(gè)變量是否某個(gè)對(duì)象的實(shí)例跨算,運(yùn)算符返回一個(gè)布爾值咙冗。instanceof只能用來判斷對(duì)象和函數(shù),不能用來判斷字符串和數(shù)字等漂彤。

如何判斷一個(gè)變量是否是數(shù)字、字符串灾搏、布爾挫望、函數(shù)

用typeof,例如:

typeof 11 === 'number'//true
typeof 'aa' === 'string'//true

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

NaN含義是Not a Number狂窑,表示非數(shù)字媳板,NaN和任何值都不相等,包括自己

NaN == NaN; //false

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

parseInt('abc'); //NaN

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

==是近似等于泉哈,===是嚴(yán)格等于蛉幸。
在近似等于時(shí),JavaScript會(huì)對(duì)數(shù)據(jù)進(jìn)行類型轉(zhuǎn)換:

  • 如果兩個(gè)值類型相同丛晦,則執(zhí)行嚴(yán)格相等的運(yùn)算
    如果兩個(gè)值的類型不同
    如果一個(gè)是null奕纫,一個(gè)是undefined,那么相等
    如果一個(gè)是數(shù)字烫沙,一個(gè)是字符串匹层,先將字符串轉(zhuǎn)為數(shù)字,然后比較
    如果一個(gè)值是true/false則將其轉(zhuǎn)為1/0比較
    如果一個(gè)值是對(duì)象锌蓄,一個(gè)是數(shù)字或字符串升筏,則嘗試使用valueOf和toString轉(zhuǎn)換后比較
    其它就不相等了

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

break是跳出循環(huán)不再繼續(xù)本循環(huán),continue是跳出此次循環(huán)但重新執(zhí)行當(dāng)前循環(huán)體瘸爽。

void 0 和 undefined在使用場(chǎng)景上有什么區(qū)別

void運(yùn)算符的作用是執(zhí)行一個(gè)表達(dá)式您访,然后返回undefined。但是某些情境下undefined是可以被賦值的剪决,比如在函數(shù)中灵汪,這樣的話就不能用undefined來進(jìn)行判斷了。所以用void 0返回undefined來進(jìn)行判斷昼捍。既減少了在原形鏈上查找 window.undefined 的時(shí)間识虚,也避免了誤用被修改過的 undefined。

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

console.log(1+1);      //輸出'2'妒茬,兩個(gè)數(shù)字進(jìn)行加法運(yùn)算
console.log("2"+"4");  //輸出'24'担锤,兩個(gè)字符串拼接
console.log(2+"4");    //輸出'24',數(shù)字和字符串的進(jìn)行拼接 
console.log(+"4");     //輸出'4'乍钻,字符串轉(zhuǎn)換成數(shù)字輸出

操作符對(duì)不同的數(shù)據(jù)類型有不同的含義肛循,比如 +
在兩個(gè)操作數(shù)都是數(shù)字的時(shí)候铭腕,會(huì)做加法運(yùn)算
兩個(gè)參數(shù)都是字符串或在有一個(gè)參數(shù)是字符串的情況下會(huì)把另外一個(gè)參數(shù)轉(zhuǎn)換為字符串做字符串拼接
在參數(shù)有對(duì)象的情況下會(huì)調(diào)用其valueOf或toString
在只有一個(gè)字符串參數(shù)的時(shí)候會(huì)嘗試將其轉(zhuǎn)換為數(shù)字
在只有一個(gè)數(shù)字參數(shù)的時(shí)候返回其正數(shù)值

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

var a = 1;  
a+++a;  /*輸出'3',a++優(yōu)先計(jì)算多糠,a++為1但a自增為2累舷,所以a++ +a相當(dāng)于1+2*/
typeof a+2;/* 輸出'number2',typeof優(yōu)先級(jí)最高夹孔,typeof a求的是a的數(shù)據(jù)類
             型被盈,得到'number',最后計(jì)算+2搭伤,將字符串'number'與數(shù)字2進(jìn)行
             拼接得到'number2' */

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

 var a = 1;
 var b = 3;
 console.log( a+++b );/* 輸出'4'只怎,a++優(yōu)先級(jí)最高,a++運(yùn)算之后a結(jié)果為1怜俐,
                        a自增為2但不參與運(yùn)算身堡,所以a+++b為4 */

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

var arr = [3,4,5]

for(i = 0; i<arr.length; i++)
{
   console.log(arr[i]*arr[i]);
}

輸出

3
9
25

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

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

輸出

Object {name: "hunger", sex: "male", age: 28}
Object {name: "hunger", sex: "male", age: 28}
Object {name: "hunger", sex: "male", age: 28}

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

var a = 1, b = 2, c = 3;
var val = typeof a + b || c > 0
console.log(val) /*輸出'number2'拍鲤,只要邏輯或運(yùn)算符前面的值為true贴谎,無論運(yùn)算符
                 后面的值是什么都取運(yùn)算符前面的值,然后賦給val*/

var d = 5;
var data = d == 5 && console.log('bb')//輸出'bb'
console.log(data)/*輸出'bb'季稳,data值為undefined擅这,d == 5結(jié)果為true,
                 d == 5 && console.log('bb')結(jié)果為undefined*/

var data2 = d = 0 || console.log('haha')
console.log(data2)/*輸出'haha'绞幌,data2值為undefined蕾哟,0 || console.log()
                  結(jié)果為undefined*/
 
var x = !!"Hello" + (!"world", !!"from here!!");
console.log(x)/*輸出'2',!"world"求字符串的布爾值取反莲蜘,其結(jié)果為false谭确,則
              !!"from here!!"和!!"Hello"的結(jié)果均為true,(false,true)
              結(jié)果取逗號(hào)后面的true票渠,true = 1逐哈,true + true = 2*/
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市问顷,隨后出現(xiàn)的幾起案子昂秃,更是在濱河造成了極大的恐慌,老刑警劉巖杜窄,帶你破解...
    沈念sama閱讀 211,496評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肠骆,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡塞耕,警方通過查閱死者的電腦和手機(jī)蚀腿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,187評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人莉钙,你說我怎么就攤上這事廓脆。” “怎么了磁玉?”我有些...
    開封第一講書人閱讀 157,091評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵停忿,是天一觀的道長。 經(jīng)常有香客問我蚊伞,道長席赂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,458評(píng)論 1 283
  • 正文 為了忘掉前任时迫,我火速辦了婚禮氧枣,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘别垮。我一直安慰自己,他們只是感情好扎谎,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,542評(píng)論 6 385
  • 文/花漫 我一把揭開白布碳想。 她就那樣靜靜地躺著,像睡著了一般毁靶。 火紅的嫁衣襯著肌膚如雪胧奔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,802評(píng)論 1 290
  • 那天预吆,我揣著相機(jī)與錄音龙填,去河邊找鬼。 笑死拐叉,一個(gè)胖子當(dāng)著我的面吹牛岩遗,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播凤瘦,決...
    沈念sama閱讀 38,945評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼宿礁,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了蔬芥?” 一聲冷哼從身側(cè)響起梆靖,我...
    開封第一講書人閱讀 37,709評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎笔诵,沒想到半個(gè)月后返吻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,158評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡乎婿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,502評(píng)論 2 327
  • 正文 我和宋清朗相戀三年测僵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片次酌。...
    茶點(diǎn)故事閱讀 38,637評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡恨课,死狀恐怖舆乔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情剂公,我是刑警寧澤希俩,帶...
    沈念sama閱讀 34,300評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站纲辽,受9級(jí)特大地震影響颜武,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拖吼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,911評(píng)論 3 313
  • 文/蒙蒙 一鳞上、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧吊档,春花似錦篙议、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,744評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至香璃,卻和暖如春这难,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背葡秒。 一陣腳步聲響...
    開封第一講書人閱讀 31,982評(píng)論 1 266
  • 我被黑心中介騙來泰國打工姻乓, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人眯牧。 一個(gè)月前我還...
    沈念sama閱讀 46,344評(píng)論 2 360
  • 正文 我出身青樓蹋岩,卻偏偏與公主長得像,于是被迫代替她去往敵國和親学少。 傳聞我的和親對(duì)象是個(gè)殘疾皇子星澳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,500評(píng)論 2 348

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