javascript
html怎么转换undefined,JavaScript之Undefined详解
Undefined 這個(gè)概念聽(tīng)起來(lái)很簡(jiǎn)單,不過(guò)你知道應(yīng)該怎樣檢查JavaScript中的變量或?qū)傩允欠裾娴拇嬖趩?#xff1f; 做這件事最好的方法是什么? 我們?nèi)绾魏w所有的邊界值? 要回答這些問(wèn)題,首先讓我們來(lái)看看究竟什么是undefined......
undefined概述
變量的值被賦予一個(gè)類型,JavaScript中有幾個(gè)內(nèi)置的本地類型:Undefined
Null
Boolean
String
Number
Object
Reference
etc…
首先看第一個(gè),內(nèi)置的Undefined類型只能有一個(gè)值,它稱為undefined。 這是一個(gè)原始值,只要聲明了變量,就會(huì)為其分配此undefined值,直到您以編程的手段為其分配不同的值。
此外,每當(dāng)函數(shù)完成執(zhí)行并返回一個(gè)沒(méi)有給定的值時(shí),它默認(rèn)返回undefined。var foo,
bar = (function() {
// do some stuff
}()),
baz = (function() {
var hello;
return hello;
}());
typeof foo; // undefined
typeof bar; // undefined
typeof baz; // undefined
因此,當(dāng)聲明一個(gè)變量但還未賦值時(shí),它將被賦予undefined值。 我們還應(yīng)該注意的是:undefined本身是一個(gè)在全局范圍內(nèi)可用的變量/屬性,它的值也是undefined。typeof undefined; // undefined
var foo;
foo === undefined; // true
但是,全局變量undefined并不是保留字,因此它可以被重新定義。 幸運(yùn)的是,從ECMA 5開(kāi)始,就不允許重新定義undefined了,但是在以前的版本和舊版瀏覽器中,可以執(zhí)行以下操作:typeof undefined; // undefined
undefined = 99;
typeof undefined; // number
null到底代表了什么?
先看下面的代碼:null == undefined // true
null !== undefined // true
很多人對(duì)此都感到困惑,實(shí)際上很簡(jiǎn)單。 null和undefined之間唯一真正的關(guān)系是:它們?cè)陬愋蛷?qiáng)制過(guò)程中都判斷為false。
之所以所以 null == undefined // true 是因?yàn)?== 沒(méi)有執(zhí)行嚴(yán)格的比較,因?yàn)樵诒容^類型時(shí)使用 !== 更嚴(yán)格。 每當(dāng)您把 null 看作是一個(gè)值時(shí),它會(huì)始終以編程方式進(jìn)行指定,并且在默認(rèn)情況下從不設(shè)置。
訪問(wèn)對(duì)象的屬性
當(dāng)您嘗試使用對(duì)象上一個(gè)不存在的屬性時(shí),也會(huì)得到undefined,如果您把不存在的屬性作為函數(shù)使用有時(shí)會(huì)引發(fā)錯(cuò)誤。var foo = {};
foo.bar; // undefined
foo.bar(); // TypeError
如果您想分辨“有未定義值的屬性”和“根本不存在的屬性”這兩者,應(yīng)該怎么做呢?
使用typeof 或者 ===都會(huì)給你一個(gè)undefined的值。
使用in運(yùn)算符能夠檢查對(duì)象中是否存在某個(gè)屬性:var foo = {};
// undefined (這樣不好,bar從未在window對(duì)象中被聲明過(guò))
typeof foo.bar;
// false (如果您不關(guān)心原型鏈,這樣用)
'bar' in foo;
// false (如果你關(guān)心原型鏈,就這樣用)
foo.hasOwnProperty('bar');
應(yīng)該用typeof還是in/hasOwnProperty?
這很顯然。一般來(lái)說(shuō),如果要測(cè)試是一個(gè)屬性否存在,那么就用 in/hasOwnProperty,如果要檢查屬性或變量的值,則用 typeof。
通過(guò)例子進(jìn)行總結(jié)
檢查變量是否存在:if (typeof foo !== 'undefined') {}
檢查對(duì)象上的屬性是否存在,無(wú)論是否已經(jīng)為它分配了值:// 存在于對(duì)象上,同時(shí)也檢查原型
if ('foo' in bar) {}
// 直接存在于對(duì)象上,不檢查原型
if (bar.hasOwnProperty('foo')) {}
檢查對(duì)象上是否存在屬性,并且屬性具有值集(真值或假)var bar = {
foo: false
};
if ('foo' in bar && typeof bar.foo !== 'undefined'){
// bar.foo存在,并且它包含以編程方式分配的值
}
總結(jié)
以上是生活随笔為你收集整理的html怎么转换undefined,JavaScript之Undefined详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 鸿蒙os终于开始大升级,华为鸿蒙OS终于
- 下一篇: angularjs html编辑器,An