2011-04-14 121 views
16

我試着在Chrome控制檯中進行這個測驗:Quiz「undefined」和undefined之間的區別是什麼?

我可以在試用後大部分解釋它們。但有一件事讓我困惑:

var x = [typeof x, typeof y][1]; 
    typeof typeof x; 

....返回「字符串」,這對我沒有任何意義。

var x = [typeof x, typeof y][1]; 

返回 「未定義」

typeof "undefined"

返回 「字符串」,這是有道理的,因爲不確定的是加引號。但總的來說,我沒有看到與undefined共存的「未定義」的目的。此外,什麼樣的數組語法呢? 「Javascript The Good Parts」表示沒有多維數組。

+0

檢查瞭解如何undefined與範圍 https://codepen.io/grumpy/post/undefined-scope-in​​-javascript – 2017-09-19 16:52:13

回答

30
  1. undefined實際上在大多數情況下是window.undefined這只是一個變量
  2. window.undefined發生未定義,除非有人定義它(嘗試undefined = 1typeof undefined"number")。
  3. typeof操作總是返回一個字符串,描述值的類型。
  4. typeof window.undefined給你"undefined" - 再次,只是一個字符串。
  5. typeof "undefined"給出"string",就像typeof "foo"會。
  6. 因此,給出"string"

與此相關的語法:

[1, 2][1]; 

這不是一個多維數組 - 它僅僅是創建一個數組第一arr = [1, 2],然後從它選擇元件1:arr[1]

1

"undefined"是一個字符串(文字),不確定的是EHR ... undefined

var x = [typeof x, typeof y][1]理應返回字符串"undefined"(從typeof y)。現在,如果您要求typeof "undefined",它將返回字符串"string"。如果您要求typeof "string"它(再次)返回"string"的課程。

可以肯定地說,typeof [anything]總是返回一個字符串(文字),因此typeof typeof something將始終是「字符串」。

+1

我認爲這是有用的說,「undefined」是一個字符串LITERAL作爲它在引號中 – sdm350 2011-04-14 12:42:04

2

undefined是默認情況下未定義的全局。

typeof返回描述對象類型的字符串。

所以:

[typeof x, typeof y][1]; 
[typeof undefined, typeof undefined][1]; 
["undefined", "undefined"][1]; 
"undefined" 

typeof "undefined" == "string" 
typeof undefined == "undefined" 
typeof 1 == "number" 
typeof {} == "object" 

此外,什麼樣的數組的語法是什麼?

它是在端字面與[1]陣列,使得它在索引1

返回對象「的Javascript好的部分」表示不存在任何多維數組。

有沒有,但一個數組可以包含其他數組。這一個不會。

1

哇,這是一個很難解釋的問題。 「typeof」運算符返回一個字符串,描述其操作數的類型。所以:

typeof undefined 

返回字符串 「undefined」,並

typeof typeof undefined 

返回字符串 「字符串」,這是字符串 「undefined」 的類型。我認爲這很令人困惑,因爲undefined既是一種類型,也是一種價值。

第二部分:在JavaScript中確實沒有多維數組(如此)。在此表達式中:

var x = [typeof x, typeof y][1]; 

第一組方括號是由2個元素組成的數組字面值。第二組方括號引用該數組的元素1(typeof y)。使得表達實際上相當於此:

var x = typeof y; 
1
  1. [typeof x, typeof y]是一個正常的含陣列類似["string", "number"]或可能["undefined", "undefined"],取決於類型的xy
  2. x = ["string", "number"][1]獲取該數組的第二個元素並將其分配給x
  3. typeof x作爲字符串"string"返回x的類型。
  4. typeof "string""string"

至於"undefined"undefined之間有什麼區別是:一個是字符串,另一個是對象。 typeof始終以字符串形式返回變量的類型,因爲您可以將undefined重新定義爲其他內容,因此您無法再正確比較它,但"undefined" == "undefined"始終爲真。

相關問題