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