您的位置:首頁>正文

undefined與null的區別

現在再去聊這個的話基本上大家都很熟悉了, 對於新手來說可以加強鞏固吧。 因為阮一峰老師的文章裡面已經寫很明白 《undefined與null的區別》

null:空物件指標 -> 沒有具體的值 -> 一般都是我們手動設置初始的值為null,後期的話會給其賦值

undefined:未定義 -> 連東西都沒有 -> 一般都是流覽器默認的值

null

1、我們設定一個變數,後期需要使用,那麼前期我們設置預設值為null

1 var timer=null; 2 function move{ 3 window.clearTimeout(timer); 4 timer=window.setTimeout(move,1000); 5 } 6 move;

2、在JS記憶體釋放中, 我們想釋放一個堆記憶體, 就讓其值變為null即可

1 var obj={name:"珠峰培訓"}; 2 obj=null; -> 剛開始開闢的這個堆記憶體沒有被佔用,流覽器會在空閒的時候把它銷毀掉

3、我們通過DOM中提供的屬性和方法獲取頁面中的某一個元素標籤,

如果當前這個標籤不存在, 獲取的結果是null, 而不是undefined

1 document.getElementById("div1") -> 如果頁面中沒有#div1,獲取的結果就是null

4、在正則的exec/字串的match捕獲中,如果當前要捕獲的字串和正則不匹配的話, 捕獲到的結果為null

1 var reg=/\d+?/g; 2 var str="zhufengpeixun"; 3 reg.exec(str) ->null 4 str.match(reg) ->null

undefined

1、在JS預解釋的時候, 只聲明未定義, 默認的值是undefined

1 console.log(num); ->undefined 2 var num=13;

2、在一個函數中, 如果沒有寫return,或者return後啥都沒返回, 默認的返回值是undefined

1 function fn{ 2 3 } 4 var res=fn; 5 console.log(res);->undefined

3、函數中設置了形參, 但是執行的時候如果沒有傳遞參數值, 那麼形參預設值是undefined

1 function fn(a,b,c){ 2 a->10 3 b->20 4 c->undefined ->arguments[2]=30 : 讓形參c的值變為30,因為在非嚴格模式下我們的arguments和形參存在映射關係, 但是在嚴格模式("use strict")中是不存在映射關係, 改變的話互不影響; 5 } 6 7 fn(10,20);

4、獲取一個物件的屬性名對應的屬性值, 如果當前的這個屬性名不存在的話,

屬性值預設是undefined

var obj={}; console.log(obj.name); ->undefined

->我們也應用這個道理來檢測當前的流覽器是否相容某一個方法

window.getComputedStyle ->獲取當前元素經過流覽器計算過的樣式

在穀歌中:我們獲取的結果是 function getComputedStyle { [native code] }

在IE6~8中:我們獲取的結果是undefined,因為在這個流覽器中不相容getComputedStyle

1 function getCss(curEle,attr){ 2 var val=null,reg=null; 3 if(window.getComputedStyle){ 4 //->相容 5 val=window.getComputedStyle(curEle,null)[attr]; 6 }else{ 7 //->不相容 8 if(attr==="opacity"){ 9 val=curEle.currentStyle["filter"]; ->'alpha(opacity=12.345)'; 10 reg=/^alpha\(opacity=(\d+(?:\.\d+)?)\)$/; 11 val=reg.test(val)?reg.exec(val)[1]/100:1; 12 }else{ 13 val=curEle.currentStyle[attr]; 14 } 15 } 16 reg=/^-?\d+(\.\d+)?(px|pt|em|rem)?$/; 17 return reg.test(val)?parseFloat(val):val; 18 }
同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示