顔と顔を合わせて手記を復習する

2815 ワード

背景:面接でnullとundefinedの違いを聞きましたが、今回はあまり満足できませんでした.いくつかの資料を調べて簡単に復習しました.
まず両者から簡単に認識して記録を調べてから:
undefinedは場所が出るかもしれません.
1、変数が明示されていますが、値が与えられていません.
var name
console.log(name)  // undefined
name  undefind   name           ,        
2,関数は行参を定義しています.
function test(name){
    console.log(name) // undefined
}
test()

  test     ,    test      ,  name      ,      
3,オブジェクトObject.存在しない変数
console.log(Object.name) // undefined

       Object      ,    (2020-4-10)        
console.log(Object)
      :ƒ Object() { [native code] }   :function Object() { [native code] }
      ,   Object   Function??? 

Function.prototype.name = function(){}
for(var i in Objetc){
    console.log(i) //    read
}

       MDN     [MDN  Object][1]

Object                  。       null   undefined,            ,  ,                。

             ,Object     new Object()。
ここでMDN Objectを調べた.
4,voidを使った表現の評価voidは演算子です.
void 0    void(0)// undefined

void false // undefined

void [] // undefined

 :ECMAScript    void                ,     undefined
最終的には、undefindは、ある表現の最も原始的な状態値であり、人為的な操作で得られたものではないと説明できます.
undefinedタイプは一つの値、すなわちundefinedだけです.宣言された変数が初期化されていない場合、変数のデフォルト値はundefinedです.
nullが発生する場合があります.
文字どおりの意味は値がないということです.nullはJavaScriptの中のキーワードです.値がない、または存在しないという意味です.つまり、メモリの中の表示はスタックの中の変数がスタックの中のメモリオブジェクトを指していません.
var test = null  
console.log(test) //null

     Object.prototype.toString.call(null)  // "[object Null]"
null            
オブジェクトまたはnullの値を割り当てられた時、元のオブジェクトはメモリの中で家に帰れない子供用の紙です.ゴミ回収はあるタイミングで対象を回収し、メモリを釈放します.すべてのオブジェクトや変数をリリースするには、簡単にnullとして値が割り当てられます.
まとめ:
nullとundefinedの違い
1,タイプが違います
console.log(typeof null) // object
console.log(typeof undefined) // undefined

//              
Object.prototype.toString.call(null) // "[object Null]"

Object.prototype.toString.call(undefined) // "[object Undefined]"
nullは有効な値が存在しないオブジェクトであり、変更できません.undefinedのオブジェクトタイプは自身が最初の状態値を定義していません.
   
    null   
var test = null
console.log(test*10) // 0

    undefined   
var test
console.log(test*10) // NaN

         :
    null        (+,-,*,/)       ,     undefined        (+,-,*,/)      NaN
2,元のタイプに変換する方法が違います.
nullはundefined変換タイプと違って、nullは算術演算変換時に数字タイプ0に変わりますが、undefinedは何の変換も行わないので、最終的にNaNになります.
null ---> 0
undefined ---> NaN
nullが0になります
var _null = 10 + null
console.log(_null) // 10
undefinedを数字に追加すると変換しません.
var _und = 10 + undefined
console.log(_und) // NaN
小記を復習します.間違いがあったら皆さんのご叱正を期待します.改善を提案します.