成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JavaScript變量、作用域和內(nèi)存問(wèn)題

Dr_Noooo / 2998人閱讀

摘要:全局變量是最外圍的一個(gè)執(zhí)行環(huán)境,代碼在環(huán)境中執(zhí)行,會(huì)創(chuàng)建一個(gè)作用域鏈,用途是保證對(duì)執(zhí)行環(huán)境有權(quán)訪問(wèn)所有變量和函數(shù)的有序訪問(wèn)。作用域鏈中最后一個(gè)對(duì)象始終是全局執(zhí)行環(huán)境。內(nèi)部環(huán)境可以通過(guò)作用域鏈訪問(wèn)所有的外部環(huán)境,外部則不能訪問(wèn)內(nèi)部。

1、基本類型和引用類型的值

* 基本類型 : 指的是簡(jiǎn)單的數(shù)據(jù)段,五種基本類型是按值訪問(wèn)的,可以直接操作保存在變量中實(shí)際的值。
* 引用類型 : 指那些可能由多個(gè)值組成的對(duì)象,引用類型的值是保存在內(nèi)存中的對(duì)象,js不允許直接訪問(wèn)內(nèi)存中的位置,也就是不可直接操作對(duì)象的內(nèi)存空間。

操作對(duì)象實(shí)際是操作對(duì)象的引用而不是實(shí)際的對(duì)象,引用類型的值按引用訪問(wèn)。
2、動(dòng)態(tài)的屬性
引用類型的值可以添加屬性和方法,也可以刪除和修改,但基本類型不行。
//引用類型

var person = new Object();
person.name = "sheyurong";
alert(person.name);      //sheyurong

基本類型添加屬性也不會(huì)報(bào)錯(cuò)。
//基本類型

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

3、賦值變量值

//基本類型

var num1 = 5;
var num2 = num1;
// num1 與 num2 中的5完全獨(dú)立,參與任何操作也不會(huì)相互影響

//引用類型

var obj1 = new Object();
var obj2 = obj1;
obj1.name = "syr";
alert(obj.name);   //"syr";
改變其中任一變量也會(huì)影響另一個(gè),因?yàn)閮蓚€(gè)變量引用同一變量。

4、傳遞參數(shù)
es中所有函數(shù)的參數(shù)都是按值傳遞的,基本類型與引用類型的傳參與變量的復(fù)制一樣。

function setName(obj){
    obj.name = "syr";
    obj = new Object();
    obj.name = "abc"
}
var person = new Object();
setName(person);
alert(person);   // "syr"
//可以把函數(shù)的傳參想象成局部變量一樣

5、檢測(cè)類型
typeof可以檢測(cè)基本類型,但檢測(cè)對(duì)象時(shí)并不能知道是什么類型的對(duì)象,因此,使用instanceof操作符。
語(yǔ)法 :

result = variable instanceof constructor
//如果變量為引用類型的實(shí)例,則instanceof返回true
例 : person instanceof Object; // person是Object的實(shí)例嗎?
根據(jù)規(guī)定,所有引用類型都是object的實(shí)例,instanceof檢測(cè)基本類型,適中返回false,因?yàn)榛绢愋筒皇菍?duì)象。

6、執(zhí)行環(huán)境及作用域

* 執(zhí)行環(huán)境決定了變量或函數(shù)有權(quán)訪問(wèn)的其他數(shù)據(jù),決定了她們各自的行為。
* 每個(gè)執(zhí)行環(huán)境都有一個(gè)環(huán)境變量對(duì)象,所有變量和函數(shù)都保存在這里面,無(wú)法訪問(wèn),但是后臺(tái)會(huì)使用它。
* 全局變量是最外圍的一個(gè)執(zhí)行環(huán)境,代碼在環(huán)境中執(zhí)行,會(huì)創(chuàng)建一個(gè)作用域鏈,用途是保證對(duì)執(zhí)行環(huán)境有權(quán)訪問(wèn)所有變量和函數(shù)的有序訪問(wèn)。
* 作用域鏈 : 如環(huán)境是函數(shù),則最開(kāi)始只包含有一個(gè)變量-arguments對(duì)象 -> 外部環(huán)境1 -> 外部環(huán)境2 ... -> 全局。

作用域鏈中最后一個(gè)對(duì)象始終是全局執(zhí)行環(huán)境。

* 內(nèi)部環(huán)境可以通過(guò)作用域鏈訪問(wèn)所有的外部環(huán)境,外部則不能訪問(wèn)內(nèi)部。函數(shù)參數(shù)的訪問(wèn)規(guī)則與執(zhí)行環(huán)境其他變量相同。

7、延長(zhǎng)作用域鏈

* 使用try-catch語(yǔ)句的catch塊;
* with語(yǔ)句 : 

都是會(huì)在作用域鏈的前端添加一個(gè)變量對(duì)象,with可將制定對(duì)象添加到作用域鏈中。
catch創(chuàng)建新變量,內(nèi)涵跑出的錯(cuò)誤對(duì)象聲明。

例 : function build(){
    var qs = "aaa";
        with(location){
            var url = href + qs;
        } return url ;
}
//with吧location對(duì)象引入,此種就包含了location中所有屬性和方法。










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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/102935.html

相關(guān)文章

  • JavaScript高級(jí)程序設(shè)計(jì)(第3版)》——變量作用域和內(nèi)存問(wèn)題(四)

    摘要:執(zhí)行環(huán)境的類型有兩種全局全局執(zhí)行環(huán)境局部函數(shù)執(zhí)行環(huán)境每個(gè)環(huán)境都可以向上搜索作用域鏈,以查詢變量和函數(shù)名但任何環(huán)境都不能通過(guò)向下搜索作用域鏈而進(jìn)入另一個(gè)執(zhí)行環(huán)境。內(nèi)部可通過(guò)作用域鏈訪問(wèn)外部,外部不能訪問(wèn)內(nèi)部。 變量、作用域和內(nèi)存問(wèn)題 ECMAScript 數(shù)據(jù)類型 基本類型(5種): Undefined,Null,Boolean,Number,String typeof() 檢測(cè)...

    YacaToy 評(píng)論0 收藏0
  • JavaScript紅寶書筆記(四)---變量、作用域和內(nèi)存問(wèn)題

    摘要:在操作對(duì)象時(shí),實(shí)際上是在操作對(duì)象的引用而不是實(shí)際的對(duì)象。為此,引用類型的值是按引用訪問(wèn)的。標(biāo)記清除是目前主流的垃圾收集算法,這種算法的思想是給當(dāng)前不使用的值加上標(biāo)記,然后再回收其內(nèi)存 1.在操作對(duì)象時(shí),實(shí)際上是在操作對(duì)象的引用而不是實(shí)際的對(duì)象。為此,引用類型的值是按引用訪問(wèn)的。 2.當(dāng)從一個(gè)變量向另一個(gè)變量復(fù)制引用類型的值時(shí),兩個(gè)變量實(shí)際上將引用同一個(gè)對(duì)象,因此,改變其中一個(gè)變量,就會(huì)...

    imtianx 評(píng)論0 收藏0
  • JS學(xué)習(xí)筆記(第4章)(變量、作用域和內(nèi)存問(wèn)題

    摘要:具體來(lái)說(shuō)就是當(dāng)執(zhí)行流進(jìn)入下列任何一個(gè)語(yǔ)句時(shí),作用域鏈就會(huì)得到加長(zhǎng)語(yǔ)句的塊和語(yǔ)句。這兩個(gè)語(yǔ)句都會(huì)在作用域鏈的前端添加一個(gè)變量對(duì)象。對(duì)來(lái)說(shuō),會(huì)將指定的對(duì)象添加到作用域鏈中。 1. 基本類型和引用類型的值 JavaScript變量可以用來(lái)保存兩種類型的值:基本類性值和引用類性值。基本類型值源自以下5種基本數(shù)據(jù)類型:Undefined、Null、Boolean、Number和String?;?..

    linkin 評(píng)論0 收藏0
  • 深入javascript——作用域和閉包

    摘要:注意由于閉包會(huì)額外的附帶函數(shù)的作用域內(nèi)部匿名函數(shù)攜帶外部函數(shù)的作用域,因此,閉包會(huì)比其它函數(shù)多占用些內(nèi)存空間,過(guò)度的使用可能會(huì)導(dǎo)致內(nèi)存占用的增加。 作用域和作用域鏈?zhǔn)莏avascript中非常重要的特性,對(duì)于他們的理解直接關(guān)系到對(duì)于整個(gè)javascript體系的理解,而閉包又是對(duì)作用域的延伸,也是在實(shí)際開(kāi)發(fā)中經(jīng)常使用的一個(gè)特性,實(shí)際上,不僅僅是javascript,在很多語(yǔ)言中都...

    oogh 評(píng)論0 收藏0
  • 變量作用域和內(nèi)存問(wèn)題

    摘要:變量作用域和內(nèi)存問(wèn)題基本類型和引用類型的值基本類型就是簡(jiǎn)單的數(shù)據(jù)段種值類型,而引用類型就是對(duì)象操控對(duì)象的引用。但是不但能訪問(wèn)自己的變量,也能訪問(wèn)和全局作用域下的變量。延長(zhǎng)作用域鏈相當(dāng)于創(chuàng)造了一個(gè)新的變量對(duì)象在當(dāng)前作用域的上方。 變量作用域和內(nèi)存問(wèn)題 1.基本類型和引用類型的值 基本類型就是簡(jiǎn)單的數(shù)據(jù)段(5種值類型),而引用類型就是對(duì)象(操控對(duì)象的引用)。 1.1復(fù)制變量值 引用類型實(shí)際...

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

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

0條評(píng)論

Dr_Noooo

|高級(jí)講師

TA的文章

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