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

JavaScript的數(shù)據(jù)類型

  1. Number類型
  2. String類型
  3. Boolean類型
  4. Object類型
    • Array數(shù)組
    • Function函數(shù)
    • Regexp正則表達(dá)式
  5. Null類型
  6. Undefined類型
  • 原始類型(Number、String、Boolean)
    最基礎(chǔ)的數(shù)據(jù)類型,不可再分割
  • 復(fù)雜類型(Object)
    一個(gè)對(duì)象里會(huì)存在多種基本數(shù)據(jù)類型,是一個(gè)容器
  • 特殊值 (Undefined、Null)

typeof與instanceof的作用及區(qū)別

  • typeof
    作為檢測(cè)變量數(shù)據(jù)類型的一種操作符,可以返回一個(gè)值的數(shù)據(jù)類型,如:number、string、boolean、function等。我們可以利用其這一特性來檢測(cè)一個(gè)變量有沒有被聲明,但是不足的是對(duì)于復(fù)雜類型的數(shù)據(jù)類型只會(huì)返回object,所以為了區(qū)分復(fù)雜類型中的數(shù)據(jù)類型,我們可以使用instanceof
  • instanceof
    由于上述的原因,我們可以通過instanceof檢測(cè)某個(gè)對(duì)象是否是一種對(duì)象的實(shí)例。

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

自然是使用typeof啦,如:
var message = "hello world";
alert (typeof message); //"string"

NaN

NaN(Not a Number)是一個(gè)特殊的數(shù)值,這個(gè)數(shù)值用來表示一個(gè)本要返回?cái)?shù)值的操作數(shù)未返回?cái)?shù)值的情況。它有兩個(gè)非同尋常的特點(diǎn),

  • 任何涉及NaN的操作都會(huì)返回NaN;
  • NaN與任何值都不相等,包括它自身;

數(shù)值的轉(zhuǎn)換

這三個(gè)函數(shù)可以實(shí)現(xiàn)非數(shù)值轉(zhuǎn)換數(shù)值(Number() 、parseInt() 、parseFloat())

  • Number() 適用于所有數(shù)據(jù)類型
  • parseInt()和parseFloat()適用于把字符串轉(zhuǎn)換成數(shù)值

全等和不全等

二者的區(qū)別除了在比較之前不裝換操作數(shù)之外,沒有其他區(qū)別,全等===在兩個(gè)操作數(shù)未轉(zhuǎn)換就相等的情況下返回true,不全等==在兩個(gè)操作數(shù)裝換后相等則返回true。由于相等和不相等操作符存在類型轉(zhuǎn)換的問題,為了保持代碼中數(shù)據(jù)類型的完整性,我們建議使用全等和不全等。

break和continue的區(qū)別

  • break 用于強(qiáng)制退出循環(huán)體,執(zhí)行循環(huán)后的語句
  • continue 則是退出當(dāng)次循環(huán),執(zhí)行下次循環(huán)

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

undefined 可以在局部作用域中被覆寫void 運(yùn)算返回值始終都是 undefine

練習(xí)

  • 以下代碼的輸出結(jié)果及原因


    1
2 //簡(jiǎn)單的數(shù)字相加
"24" //字符串拼接
"24" //數(shù)字轉(zhuǎn)換為字符串后拼接
4 //字符串變?yōu)閿?shù)字 
  • 以下代碼輸出結(jié)果
var a = 1; 
a+++a; //a++=1,a+++a=3;
typeof a+2; //由于優(yōu)先級(jí)的原因typeof a="number",所以結(jié)果是"number2"
  • 以下代碼的輸出結(jié)果及原因
var a = 1;
var b = 3;
console.log( a+++b ); //4,a++優(yōu)先級(jí)高的原因
  • 遍歷數(shù)組,把數(shù)組里的打印數(shù)組每一項(xiàng)的平方
var arr = [3,4,5]
for(i=0; i<arr.length; i++){
    console.log(arr[i]*arr[i]);
}
  • 遍歷 JSON, 打印里面的值
var obj = {
 name: 'hunger', 
 sex: 'male', 
 age: 28 
}
for(i in obj){
   console.log(obj[a]);
}
  • 以下代碼輸出結(jié)果是? 為什么
var a = 1, b = 2, c = 3;
var val = typeof a + b || c >0
console.log(val)     //"number2",根據(jù)優(yōu)先級(jí)得到"number2"||c>0,所以為“number2”

var d = 5;
var data = d ==5 && console.log('bb')
console.log(data)    // bb, undefined     true&&bb,所以為console.log(console.log('bb')),所以是undefined.

var data2 = d = 0 || console.log('haha')
console.log(data2)    // haha,undefined,0||console.log('haha')得到haha,然后再賦值給d,再賦值給data2,于是console.log(data2)就是console.log(console.log('haha')),為undefined
 
var x = !!"Hello" + (!"world", !!"from here!!");
console.log(x)    //2,  原式相當(dāng)于 var x = true + true;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容