国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

變量的值

noONE / 2717人閱讀

摘要:在將一個(gè)值賦值給變量時(shí),解析器會(huì)確定值的類(lèi)型。添加屬性變量的值是復(fù)雜數(shù)據(jù)類(lèi)型時(shí),可以簡(jiǎn)單的為其添加屬性。賦值變量的值從一個(gè)變量向另一個(gè)變量復(fù)制值時(shí),會(huì)為新的變量分配位置,然后把變量的值復(fù)制到該位置上。

ECMAScript 的變量是松散類(lèi)型的,也就是說(shuō)可以保存任何類(lèi)型的數(shù)據(jù)。數(shù)據(jù)的類(lèi)型分為簡(jiǎn)單數(shù)據(jù)類(lèi)型和復(fù)雜數(shù)據(jù)類(lèi)型。簡(jiǎn)單數(shù)據(jù)類(lèi)型有: Undefined、Null、Boolean、Number和 String;復(fù)雜數(shù)據(jù)類(lèi)型只有一種,就是Object。在將一個(gè)值賦值給變量時(shí),解析器會(huì)確定值的類(lèi)型。如果是簡(jiǎn)單類(lèi)型,直接保存在變量中,如果是復(fù)雜類(lèi)型,則把值保存在內(nèi)存中,而把值的引用保存在變量中。也就是說(shuō)變量的值有兩種:簡(jiǎn)單的數(shù)據(jù)類(lèi)型的值或者復(fù)雜數(shù)據(jù)類(lèi)型的引用。因此,在操作變量時(shí),就會(huì)有所不同。

1、添加屬性

變量的值是復(fù)雜數(shù)據(jù)類(lèi)型時(shí),可以簡(jiǎn)單的為其添加屬性。這個(gè)很容易理解,而當(dāng)變量的值是某些簡(jiǎn)單的數(shù)據(jù)類(lèi)型時(shí),為其添加屬性也不會(huì)報(bào)錯(cuò),但之后卻不能訪問(wèn),如下:

 
var person= "xiaoming";
name.age = 27;
alert(name.age); //undefined

這是因?yàn)镴avaScript引擎在處理添加屬性的代碼時(shí),會(huì)在內(nèi)部臨時(shí)創(chuàng)建一個(gè)對(duì)應(yīng)包裝類(lèi)型(這里是String類(lèi)型)的臨時(shí)對(duì)象, 并把對(duì)基本類(lèi)型的操作代理到對(duì)這個(gè)臨時(shí)對(duì)象身上,但在操作完成之后,臨時(shí)對(duì)象就扔掉了,下次訪問(wèn)時(shí),重新建立新的臨時(shí)對(duì)象,添加的屬性并不會(huì) 保存。有時(shí),在代碼中直接調(diào)用基本數(shù)據(jù)類(lèi)型的方法的方法也是同樣的道理。因此,只能給復(fù)雜數(shù)據(jù)類(lèi)型的值添加屬性。

2、賦值變量的值

從一個(gè)變量向另一個(gè)變量復(fù)制值時(shí),會(huì)為新的變量分配位置,然后把變量的值復(fù)制到該位置上。不管變量的中保存的是基本數(shù)據(jù)類(lèi)型的值,還是復(fù)雜數(shù)據(jù)類(lèi)型的引用,都是直接把變量中保存的值直接賦值并保存到新的位置上面。

簡(jiǎn)單的數(shù)據(jù)類(lèi)型很好理解,復(fù)雜的數(shù)據(jù)類(lèi)型可以參照下圖:

變量obj2復(fù)制的是obj1中保存的對(duì)象的引用,復(fù)制之后,obj1和obj2中分別保存一個(gè)指向該對(duì)象的引用。

3、傳遞參數(shù)

ECMAScript 中所有函數(shù)的參數(shù)都是按值傳遞的。也就是說(shuō)在傳遞參數(shù)時(shí),實(shí)際上就是把變量中保存的值復(fù)制了一遍,保存在對(duì)應(yīng)的參數(shù)中,從而變成了函數(shù)內(nèi)部的一個(gè)變量。這時(shí),需要注意的一點(diǎn)時(shí),對(duì)于簡(jiǎn)單的數(shù)據(jù)類(lèi)型,新的變量(參數(shù))和外部的變量已經(jīng)沒(méi)有聯(lián)系了。而對(duì)于復(fù)雜數(shù)據(jù)類(lèi)型,因?yàn)閮蓚€(gè)變量中保存的都是對(duì)象的引用,因此兩個(gè)變量還是僅僅聯(lián)系在一起的,如下:

var a = 3;
var o = { name:"xiaoming" };
function fn(obj, num){
     num += 10;
     o.name = "hh";
     return num;
}
var res = fn();

alert(res);     //13
alert(a);     //3
alert(o.name); //"hh"

4、檢測(cè)類(lèi)型

正如開(kāi)頭說(shuō)的變量是松散的,為了確保代碼可以正確的執(zhí)行,很多時(shí)候都需要檢測(cè)變量值的類(lèi)型。變量的值是簡(jiǎn)單的數(shù)據(jù)類(lèi)型時(shí)(null除外),只需要使用typeof操作符,就可以很簡(jiǎn)單的檢測(cè)出來(lái)。但變量的值是復(fù)雜數(shù)據(jù)類(lèi)型的引用時(shí),就有點(diǎn)麻煩了,使用typeof始終只會(huì)返回‘object’。如果知識(shí)簡(jiǎn)單的檢測(cè),可以使用 instanceof 操作符。使用如下:

res = obj instanceof constructor

只要變量是給定復(fù)雜數(shù)據(jù)類(lèi)型的實(shí)例,那么instanceof 操作符就會(huì)返回 true。需要說(shuō)的一點(diǎn)是, 所有復(fù)雜數(shù)據(jù)類(lèi)型的值都是 Object 的實(shí)例,使用這個(gè)操作符檢測(cè)是不是Object構(gòu)造函數(shù)的實(shí)例時(shí),都會(huì)返回true。

使用這種方式檢測(cè)在大多數(shù)情況下都是沒(méi)有問(wèn)題的,但當(dāng)頁(yè)面的中存在嵌套的框架或者在一些特殊的瀏覽器中就會(huì)出現(xiàn)問(wèn)題。例如,在一個(gè)frame中定義了一個(gè)數(shù)組arr,而在最外層的window環(huán)境中檢測(cè),就會(huì)返回false。為了確保檢測(cè)結(jié)果的正確,可以使用Object原聲的toString方法,對(duì)于任何的復(fù)雜數(shù)據(jù)類(lèi)型,這個(gè)方法都會(huì)返回“ [object NativeConstructorName]”格式的字符串,例如:

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

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/82093.html

相關(guān)文章

  • 變量和作用域

    摘要:當(dāng)代碼在一個(gè)環(huán)境中執(zhí)行時(shí),會(huì)創(chuàng)建變量對(duì)象的一個(gè)作用域鏈,作用域鏈的用途,是保證對(duì)執(zhí)行環(huán)境有權(quán)訪問(wèn)的所有變量和函數(shù)的有序訪問(wèn)。作用域鏈的下一個(gè)變量對(duì)象則來(lái)自下一個(gè)包含環(huán)境。 前言 JavaScript中變量是松散類(lèi)型,這樣它只在特定的時(shí)間內(nèi)用于保存一個(gè)特定的值。由于不存在定義某個(gè)變量必須要保存何種數(shù)據(jù)類(lèi)型的規(guī)則,變量的值和其數(shù)據(jù)類(lèi)型可以在腳本的生命周期內(nèi)改變。 1. 基本類(lèi)型和引用類(lèi)型的...

    Codeing_ls 評(píng)論0 收藏0
  • Java中的Volatile關(guān)鍵字

    摘要:變量可見(jiàn)性問(wèn)題的關(guān)鍵字保證了多個(gè)線程對(duì)變量值變化的可見(jiàn)性。只要一個(gè)線程需要首先讀取一個(gè)變量的值,基于這個(gè)值生成一個(gè)新值,則一個(gè)關(guān)鍵字不足以保證正確的可見(jiàn)性。 Java的volatile關(guān)鍵字用于標(biāo)記一個(gè)Java變量為在主存中存儲(chǔ)。更確切的說(shuō),對(duì)volatile變量的讀取會(huì)從計(jì)算機(jī)的主存中讀取,而不是從CPU緩存中讀取,對(duì)volatile變量的寫(xiě)入會(huì)寫(xiě)入到主存中,而不只是寫(xiě)入到CPU緩存...

    JohnLui 評(píng)論0 收藏0
  • 值類(lèi)型、執(zhí)行環(huán)境和垃圾回收

    摘要:中的變量是松散類(lèi)型的即它在不同的時(shí)期可以有不同類(lèi)型的值這也是最強(qiáng)大的的特性之一基本類(lèi)型和引用類(lèi)型的值的值類(lèi)型有兩種基本類(lèi)型引用類(lèi)型。 ECMAscript中的變量是松散類(lèi)型的,即它在不同的時(shí)期可以有不同類(lèi)型的值,這也是ECMAscript最強(qiáng)大的的特性之一. 基本類(lèi)型和引用類(lèi)型的值 javascript的值類(lèi)型有兩種:基本類(lèi)型 引用類(lèi)型。基本類(lèi)型的值是指的簡(jiǎn)單的數(shù)據(jù)段,基本類(lèi)型有五種,...

    darkbaby123 評(píng)論0 收藏0
  • Java并發(fā)編程之原子性操作

    摘要:將與當(dāng)前線程建立一對(duì)一關(guān)系的值移除。為了讓方法里的操作具有原子性,也就是在一個(gè)線程執(zhí)行這一系列操作的同時(shí)禁止其他線程執(zhí)行這些操作,提出了鎖的概念。 上頭一直在說(shuō)以線程為基礎(chǔ)的并發(fā)編程的好處了,什么提高處理器利用率啦,簡(jiǎn)化編程模型啦。但是磚家們還是認(rèn)為并發(fā)編程是程序開(kāi)發(fā)中最不可捉摸、最詭異、最扯犢子、最麻煩、最?lèi)盒摹⒆钚臒⒆钊菀壮鲥e(cuò)、最不符合社會(huì)主義核心價(jià)值觀的一個(gè)部分~ 造成這么多最...

    instein 評(píng)論0 收藏0
  • JavaScript學(xué)習(xí)筆記 - 變量、作用域與內(nèi)存問(wèn)題

    摘要:語(yǔ)句中的塊語(yǔ)句對(duì)來(lái)說(shuō),將會(huì)指定對(duì)象添加到作用域鏈中。在嚴(yán)格模式下,初始化未經(jīng)聲明的變量會(huì)導(dǎo)致錯(cuò)誤。查詢標(biāo)識(shí)符搜索過(guò)程從作用域鏈的前端開(kāi)始,向上逐級(jí)查詢與給定名字匹配的標(biāo)識(shí)符。 本文記錄了我在學(xué)習(xí)前端上的筆記,方便以后的復(fù)習(xí)和鞏固。 4.1基本類(lèi)型和引用類(lèi)型的值 ECMAScript變量可能包含兩種不同數(shù)據(jù)類(lèi)型的值:基本類(lèi)型值和引用類(lèi)型值。基本類(lèi)型指的是簡(jiǎn)單的數(shù)據(jù)段,而引用類(lèi)型值指那些可...

    lavnFan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<