JavaScript面試問題-數據類型,你以為很簡單?簡單中的不簡單

在本文中,我們將研究一些數據類型的問題,包括一些在面試中經常問到的技巧問題。強制類型常常讓人們在JavaScript面試中被問到。因此,我們應該瞭解一些基本的JavaScript類型強制規則,併為一些棘手的問題做好準備。

JavaScript面試問題-數據類型,你以為很簡單?簡單中的不簡單

本文目錄:

  • JavaScript中的“假值”是什麼?
  • 如何檢查值是否是假值?
  • 什麼是真值?
  • 什麼是包裝對象?
  • 隱性強制和顯性強制之間有什麼區別?
  • 0 || 1 返回什麼?
  • 0 && 1 返回什麼?
  • false == ‘0’ 返回什麼?
  • 4 < 5 < 6 返回什麼?
  • 6 > 5 > 4 返回什麼?
  • typeof undefined == typeof null 的結果是什麼?
  • typeof typeof 10 返回什麼?

JavaScript中的“假值”是什麼?

在JavaScript中,“假值”有如下幾個:

  • ' '
  • 0
  • null
  • undefined
  • false
  • NaN

當它們轉換為布爾值時,它們將變為 false。

如何檢查值是否是假值?

使用 !! 運算符或布爾函數,以檢查它們是否是假值,如果值假值,則兩者都將返回false,例如

<code>!!0
// false
Boolean(0)
// false/<code>

什麼是真值?

真值是除上面列出的那些假值之外的任何值。

什麼是包裝對象?

包裝器對象是由返回原始值的構造函數創建的對象,但如果是數字或字符串,則類型為 'object'。

Symbols和BigInt有自己的類型。

JavaScript中,有 Number,String 構造函數,Symbol 和 BigInt 工廠函數。

基本值臨時轉換為包裝對象以調用方法。

<code>'foo'.toUpperCase()/<code>

然後我們得到'FOO'。它通過將 'foo' 文字轉換為對象,然後在其上調用 toUpperCase() 方法來工作。

我們還可以創建包裝對象的numbers和BigInt如下:

<code>new Number(1)
BigInt(1)/<code>

直接使用 Number 或 String

構造函數不太有用,因此我們應避免使用它。它們為我們提供了對象的類型,但與原始對象具有相同的內容。

如果我們確實用 new 操作符創建了 Number 和 String 包裝對象,如下所示:

<code>const numObj = new Number(1);
const strObj = new String('foo');/<code>

我們可以使用 valueOf 方法返回這些包裝對象的原始值版本,如下所示:

<code>numObj.valueOf();
strObj.valueOf();/<code>

隱性強制和顯性強制之間有什麼區別?

隱式強制意味著JavaScript解釋器將一條數據從一種類型轉換為另一種類型,而無需顯式調用方法。

例如,以下表達式被隱式轉換為字符串:

<code> console.log(1 + '2');
// '12'/<code>

另一個示例是:

<code>true + false
// 1/<code>

將返回1,因為將 true 轉換為1,將 false

轉換為0,然後將它們加在一起。

再看個例子:

<code>3 * '2'
// 6/<code>

返回6,因為將 '2' 轉換為 2,然後將它們相乘。

顯式轉換通過調用方法或使用運算符轉換類型來完成。例如:

<code>+'1' + +'2'
// 3/<code>

因為我們有 '1' 和 '2' 都被一元 + 運算符轉換為數字,所以得到3。

我們還可以對函數執行相同的操作。例如,我們可以使用 parseInt 函數而不是使用一元 + 運算符,我們可以將上面的表達式重寫為:

<code>parseInt('1') + parseInt('2')
// 3/<code>

0 || 1 返回什麼?

由於 0 是假值,它將觸發第二個操作數運行,從而得到1。因此,它應返回1。

0 && 1 返回什麼?

由於 0 是假值,由於我們進行了短路運算,因此它將停止運行。因此我們得到0。

false == ‘0’ 返回什麼?

false 是假值,而 '0' 則轉換為0,這是假值,因此它們在 == 的比較標準上相同。因此,我們應該得到 true 的結果。

4 < 5 < 6 返回什麼?

在JavaScript中,比較是從左到右進行的。因此,將首先運算 4 < 5,這使我們得到 true,然後運算 true < 6,將其轉換為 1 < 6,這也是 true。

因此該表達式的結果是 true。

6 > 5 > 4 返回什麼?

在JavaScript中,比較是從左到右進行的。因此,將首先運算 6 > 5,這使我們得到 true,然後運算 true > 4,將其轉換為 1 > 4

,這也是 false。

因此該表達式的結果是 false。

typeof undefined == typeof null 的結果是什麼?

typeof undefined 返回 'undefined',typeof null 返回 'object'。

由於 'undefined' 不等於 'object',因此表達式應為 false。

typeof typeof 10 返回什麼?

JavaScript將 typeof typeof 10 評估為 typeof(typeof 10)。因此,這將返回 typeof 'number',由於 'number' 是字符串,因此將返回 'string'。


感謝您的閱讀,在這個“亂世”,希望能幫助大家提高面試通過率、以及大前端技術的學習等。這裡也推薦我看過的非常好的兩本優質面試相關的圖書。


本頭條號聚焦大前端技術和程序員成長,如果對你有所啟發和幫助,可以點個關注、收藏,也可以留言討論,這是對作者的最大鼓勵。

作者簡介:Web前端工程師,全棧開發工程師、持續學習者。


分享到:


相關文章: