JS數據類型運算符流程控制語句

1.JavaScript 定義了幾種數據類型? 哪些是原始類型?哪些是復雜類型?原始類型和復雜類型的區別是什么?

  • 定義了數字、字符串、布爾值(boolean value)、undefined、null、對象等六種數據類型。
  • 原始類型有數值、字符串、布爾值
  • 復雜類型只有對象,對象的類型又可以分為下列種:
    1.狹義的對象(object)
    2.數組(array)
    3.函數(function())
    4.正則表達式(regexp)
  • undefined、null是特殊的數據類型
  • 原始類型和復雜類型的區別:
    1.原始類型是最基礎的數據類型,無法再細分,復雜類型是由原始類型的數據組合而來。

2.typeof和instanceof的作用和區別?

1.typeof的作用是返回右邊值的數據類型,比如說typeof 123,返回一個number,但它是針對基礎的數據類型,它只能返回數值、字符串、布爾值、undefined、對象這五種類型,其中null也是返回對象。
2.instanceof的作用用來檢測左邊的值是否是右邊的構造函數的一個實例,比如[ ] instanceof Array,返回值為true;

3.如何判斷一個變量是否是數字、字符串、布爾、函數

可以使用typeof來判斷,比如

    var a = function () {

    };
    console.log(typeof a);

console輸出function 。

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

  • NaN是數字數據類型里面之中特殊的一種數字,它是由其他非數字類型數據強制轉化為數字而來。比如:
    var a = "abc";
    var b = Number(a);
    console.log(b);

console輸出NaN,因為變量a是一個字符串,被強行轉化為數字的后果就是變成NaN。

  • 它的特別之處在于它自身與自身不想等,因為它本身是一個不確定的值,NaN可以由各種各樣的非數字類型的數據轉化而來,所以它不等于自身也不是很難理解。例:
      if(NaN === NaN){
        console.log("我跟自身相等");
    }else{
        console.log("我跟自身不相等");
    }

console端口輸出我跟自身不相等。

5.如何把非數值轉化為數值?

有三種方法:
1.強制轉換,Number(a)
2.轉化成整數,parseInt(a)
3.轉化成浮點數,parseFloat(a)

6.==與===有什么區別

“==”是數值相等,而“===”不僅要在數值上相等,還要在數據類型上相等,是完全的相等。而不是前者的近似相等。

7.break與continue有什么區別

break是中止循環體,continue是中斷當前這次的循環,然后接著繼續執行下一次循環。例如:

  for(var i=0;i<10;i++){
      if(i===5){
          continue;
  }
      if(i===8){
          break;
 }
  console(i);
}

當i等于5的時候,中止當前循環,然后繼續for循環。當i等于8的時候,直接中斷for循環。

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

  • void 0返回一個undefined,通常用來獲取undefined,后面的數字0也可以是別的數字,返回的都是undefined,我也不知道為什么一定要用0,也許大家覺得方便一些。
  • undefined不是ES5中的保留字,所以是可以被修改的,所以通常我們用void 0來獲取undefined,而不是直接使用undefined。

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

9.png

輸出結果如上圖,運算符 " + " 總是傾向于把它左右的值都轉化為數字,或者作為字符串的連接字符。
第一個數字相加之和,沒什么好說的。第二個字符串連接,結果為 " 24 "。第三個左邊是數字,右邊是字符串,數字被轉化成字符串,然后進行字符串的連接。第四個左邊為空,右邊是字符串,字符串被 " + " 轉化為數字

10.以下代碼的輸出結果是?

var a = 1;  
a+++a;  
typeof a+2;
  • 因為+的運算符優先級較低,所以a+++a可以看成(a++)+a,先計算a++然后再計算a,(a++)+a -> 1+2 -> 3。
  • a的數據類型是number,因為+的運算符優先級較低,所以我們先計算typeof a,得到number,注意這里的number只是表明a的數據類型是number,但是number本身是個字符串,所以"number"+2等于“number2”。

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

 var a = 1;
 var b = 3;
 console.log( a+++b );

因為+的運算符優先級較低,所以表達式實際上是(a++)+b,然后就是a被賦值為1,之后其他的a都加1,變成2,但是只有1個a,所以就變成了1+3等于4。輸出結果為4。

12.遍歷數組,把數組里的打印數組每一項的平方

12.png

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

13.png

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

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

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

var data2 = d = 0 || console.log('haha')
console.log(data2)
 
var x = !!"Hello" + (!"world", !!"from here!!");
console.log(x)

1.邏輯或的運算規則是如果左側的值為true,那么右側的值就不計算了,再因為"typeof"優先級高于"+",所以val被賦值為"number2"。
2.邏輯且的運算規則是如果左側的值為true,那么就不計算左側的值,而是直接返回右側的值,輸出"bb",由于左側的值不計算,所以console.log(data)輸出undefined。
3.邏輯或的左側是false,那么就不計算左側的值,直接返回右側的值,所以輸出"haha",由于左側的值不計算,所以console.log(data2)輸出undefined。
4.邏輯非可以將數據的類型轉化為boolean,所以!!"Hello"為true,右側也是一個字符串取boolean,非空字符串為true,所以true + true等于2,x被賦值為2。console.log(x)輸出為2。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容