摘要:變量的特點(diǎn)變量是松散類型的,所謂松散類型就是可以用來(lái)保存任何類型的數(shù)據(jù)。
變量的特點(diǎn)
js變量是松散類型的,所謂松散類型就是可以用來(lái)保存任何類型的數(shù)據(jù)。換句話說(shuō), 每個(gè)變量?jī)H僅是一個(gè)用于保存值的占位符而已
js變量可以用來(lái)保存任何值,未經(jīng)過(guò)初始化的變量,會(huì)保存一個(gè)特殊的值—undefined,如:var msg;
js變量的初始化并不會(huì)為它標(biāo)記類型;初始化的過(guò)程就是給變量賦一個(gè)值那么簡(jiǎn)單。因此,可以在修改變量值的同時(shí)修改值的類型(不推薦)
js變量的生命周期就是其所在的作用域,因此不推薦在全局內(nèi)定義變量(內(nèi)存泄漏)
js變量直接聲明時(shí),會(huì)創(chuàng)建一個(gè)全局變量,嚴(yán)格模式下會(huì)報(bào)錯(cuò) function test(){ msg = "hi"; }
可以使用一條語(yǔ)句定義多個(gè)變量,只要像下面這樣把每個(gè)變量(初始化或不初始化均可)用逗號(hào)分隔開(kāi)即可
var message = "hi", found = false, age = 29;變量的分類和檢測(cè)
1. 變量檢測(cè)—typeofECMAScript 中有 5 種簡(jiǎn)單數(shù)據(jù)類型(也稱為基本數(shù)據(jù)類型):Undefined、Null、Boolean、Number 和 String。還有 1 種復(fù)雜數(shù)據(jù)類型—Object,Object 本質(zhì)上是由一組無(wú)序的鍵值對(duì)組成的
typeof始終返回的是下列的某個(gè)字符串
"undefined"—如果這個(gè)值未定義;
"boolean"—如果這個(gè)值是布爾值;
"string"—如果這個(gè)值是字符串;
"number"—如果這個(gè)值是數(shù)值;
"object"—如果這個(gè)值是對(duì)象或 null;
"function"—如果這個(gè)值是函數(shù);
注意:
特殊值null被認(rèn)為是一個(gè)空的對(duì)象引用,因此typeof null === "object"
typeof會(huì)將函數(shù)類型識(shí)別為"function",雖然函數(shù)不是多帶帶的數(shù)據(jù)類型
var s = "Nicholas"; var b = true; var i = 22; var u; var n = null; var o = new Object(); var f = new Function(); alert(typeof s); //string alert(typeof i); //number alert(typeof b); //boolean alert(typeof u); //undefined alert(typeof n); //object alert(typeof o); //object alert(typeof f); //function
typeof 操作符是確定一個(gè)變量是字符串、數(shù)值、布爾值,還是 undefined 的最佳工具。如果變量的值是一個(gè)對(duì)象或 null,則 typeof 操作符會(huì)像下面例子中所示的那樣返回"object",我們依然無(wú)法確定對(duì)象的具體類型...
2. 變量檢測(cè)—instanceof語(yǔ)法: result = variable instanceof constructor
如果變量是給定引用類型(根據(jù)它的原型鏈來(lái)識(shí)別)的實(shí)例,那么 instanceof 操作符就會(huì)返回 true
alert(person instanceof Object); alert(colors instanceof Array); alert(pattern instanceof RegExp);
注意:
在檢測(cè)一個(gè)引用類型值和 Object 構(gòu)造函數(shù)時(shí),instanceof 操作符始終會(huì)返回 true,因?yàn)?b>所有引用類型的值都是 Object 的實(shí)例
如果使用 instanceof 操作符檢測(cè)基本類型的值,則該操作符始終會(huì)返回 false,因?yàn)榛绢愋筒皇菍?duì)象
instanceof 能夠確定引用類型的實(shí)例對(duì)象是否在某條原型鏈上,但是無(wú)法精準(zhǔn)的判斷變量到底是什么類型,而且在面對(duì)基本類型時(shí)都會(huì)返回false...
3. 變量檢測(cè)—Obect.prototype.toString這個(gè)方法是檢測(cè)數(shù)據(jù)類型最準(zhǔn)確的方法(在不認(rèn)為更改對(duì)象原型方法toString的前提下),建議將其封裝為函數(shù)做判別
Object.prototype.toString.call(123) //"[object Number]" Object.prototype.toString.call("123") //"[object String]" Object.prototype.toString.call(undefined) //"[object Undefined]" Object.prototype.toString.call(true) //"[object Boolean]" Object.prototype.toString.call({}) //"[object Object]" Object.prototype.toString.call([]) //"[object Array]" Object.prototype.toString.call(function(){}) //"[object Function]" Object.prototype.toString.call(new Date) // "[object Date]"
函數(shù)封裝:
// 判斷是否為函數(shù) function isFunction(fn) { return Object.prototype.toString.call(fn) === "[object Function]"; } // 判斷是否為數(shù)組 function isArray(o) { return Object.prototype.toString.call(o) === "[object Array]"; }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/84707.html
摘要:具體說(shuō)就是執(zhí)行流進(jìn)入下列任何一個(gè)語(yǔ)句時(shí),作用域鏈就會(huì)得到加長(zhǎng)語(yǔ)句的塊。如果局部環(huán)境中存在著同名的標(biāo)識(shí)符,就不會(huì)使用位于父環(huán)境中的標(biāo)識(shí)符訪問(wèn)局部變量要比訪問(wèn)全局變量更快,因?yàn)椴挥孟蛏纤阉髯饔糜蜴湣? 基本類型和引用類型的值 ECMAscript變量包含 基本類型值和引用類型值 基本類型值值的是基本數(shù)據(jù)類型:Undefined, Null, Boolean, Number, String ...
摘要:瀏覽器對(duì)象模型提供了很多對(duì)象,用于訪問(wèn)瀏覽器的功能,這些功能與任何網(wǎng)頁(yè)內(nèi)容無(wú)關(guān)。對(duì)象基本上只用來(lái)表明客戶端的能力。 BOM(瀏覽器對(duì)象模型)提供了很多對(duì)象,用于訪問(wèn)瀏覽器的功能,這些功能與任何網(wǎng)頁(yè)內(nèi)容無(wú)關(guān)。 window對(duì)象 全局作用域 定義全局變量與在window對(duì)象上直接定義屬性還是有一點(diǎn)差別:全局變量不能通過(guò)delete操作符刪除,而直接在window對(duì)象上的定義的屬性可以。 v...
摘要:作用域鏈中的下一個(gè)變量對(duì)象來(lái)自包含外部環(huán)境,而再下一個(gè)變量對(duì)象則來(lái)自下一個(gè)包含環(huán)境。這樣,一直延續(xù)到全局執(zhí)行環(huán)境全局執(zhí)行環(huán)境的變量對(duì)象始終都是作用域鏈中的最后一個(gè)對(duì)象標(biāo)識(shí)符解析沿作用域鏈一級(jí)一級(jí)搜索標(biāo)識(shí)符。 一、寫在前面 最近研究了創(chuàng)建Android虛擬機(jī)、vscode結(jié)合weex開(kāi)發(fā)Android APP、Vmware裝MAC虛擬機(jī)的事,看的內(nèi)容不夠多,接下來(lái)加油 二、變量、作用域和...
摘要:為了每個(gè)對(duì)象都能通過(guò)來(lái)檢測(cè),需要以或者的形式來(lái)調(diào)用,傳遞要檢查的對(duì)象作為第一個(gè)參數(shù),稱為。對(duì)象都是動(dòng)態(tài)的,這就意味著每次訪問(wèn)對(duì)象,都會(huì)運(yùn)行一次查詢。是語(yǔ)言中立的用于訪問(wèn)和操作和文檔。 一、第三章 基本概念: 1.理解參數(shù) 1.1 可以向函數(shù)中傳遞任意數(shù)量的參數(shù),并且可以通過(guò)arguments對(duì)象來(lái)訪問(wèn)這些參數(shù)。 1.2 arguments對(duì)象只是類似數(shù)組,它通過(guò)length來(lái)確定傳進(jìn)來(lái)...
摘要:表示沒(méi)有對(duì)象,即該處不應(yīng)該有值。典型用法是作為函數(shù)的參數(shù),表示該函數(shù)的參數(shù)不是對(duì)象。作為對(duì)象原型鏈的終點(diǎn)。表示缺少值,就是此處應(yīng)該有一個(gè)值,但是還沒(méi)有定義。 undefined 和 null 的簡(jiǎn)單介紹 undefined 和 null 都是簡(jiǎn)單數(shù)據(jù)類型,且對(duì)應(yīng)的我數(shù)據(jù)類型下有且僅有一個(gè)值,分別為undefined和null; 《javascript高級(jí)程序設(shè)計(jì)》書(shū)中這樣描述: 在使用...
閱讀 3114·2023-04-25 20:22
閱讀 3409·2019-08-30 11:14
閱讀 2656·2019-08-29 13:03
閱讀 3255·2019-08-26 13:47
閱讀 3301·2019-08-26 10:22
閱讀 1329·2019-08-23 18:26
閱讀 682·2019-08-23 17:16
閱讀 1969·2019-08-23 17:01