最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript變量類型以及變量作用域詳解

 更新時間:2017年08月14日 10:30:44   作者:粥要熬  
這篇文章主要為大家詳細介紹了JavaScript變量類型以及變量作用域的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下

變量類型

ECMAScript變量可能包含兩種不同類型的數(shù)據(jù)值:基本類型和引用類型。

基本類型

基本類型指的是簡單的數(shù)據(jù)段,5種基本數(shù)據(jù)類型:undefined、null、boolean、number、string,基本數(shù)據(jù)類型是按值訪問的,因此可以操作保存在變量中的實際的值。

復制變量值

從一個變量向另一個變量復制基本類型的值,會在變量對象上創(chuàng)建一個新值,然后把該值復制到為新變量分配的位置上。例如:

var num1 = 5;
var num2 = num1;

復制前的變量對象

這里寫圖片描述

復制后的變量對象

這里寫圖片描述

引用類型

引用類型指那些可能由多個值構成的對象,引用類型的值是保存在內(nèi)存中的對象,JavaScript不允許直接訪問內(nèi)存中的位置,在操作對象時,實際上是在操作對象的引用而不是實際的對象,因此,引用類型的值是按引用訪問的。

動態(tài)屬性

引用類型的值,我們可以為其添加屬性和方法,也可以改變和刪除其屬性和方法。如果對象不被銷毀或者這個屬性不被刪除,則這個屬性將一直存在,但是我們不能給基本類型的值添加屬性。例如:

var person = new Object();
person.say = "hello";
alert(person.say); //"hello"

復制變量值

從一個變量向另一個變量復制引用類型的值時,也會將存儲在變量對象中的值復制一份放到為新變量分配的空間中,這個值的副本實際上是一個指針,而這個指針指向存儲在堆中的一個對象。復制結(jié)束后,兩個變量實際上將引用同一個對象,改變其中一個變量,就會影響另一個變量。例如:

var obj1 = new Object();
var obj2 = obj1;
obj1.say = "hello";
alert(obj2.say); //"hello"

這里寫圖片描述

傳遞參數(shù)

ECMAScript中所有函數(shù)的參數(shù)都是按值傳遞的,把函數(shù)外部的值復制給函數(shù)內(nèi)部的參數(shù)。在向參數(shù)傳遞基本類型的值時,被傳遞的值會被復制給一個局部變量;在向參數(shù)傳遞引用類型的值時,會把這個值在內(nèi)存中的地址復制給一個局部變量,因此這個局部變量的變化會反映在函數(shù)的外部。例如:

function addTen(num) {
 num += 10;
 return num;
}
var count = 20;
var result = addTen(count);
alert(count);  //20 
alert(result);  //30

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

執(zhí)行環(huán)境定義了變量或函數(shù)有權訪問的其他數(shù)據(jù),決定了他們各自的行為。
全局執(zhí)行環(huán)境是最外圍的執(zhí)行環(huán)境,在WEB瀏覽器中,全局執(zhí)行環(huán)境被認為是window對象,因此全局變量和屬性都是作為window的屬性和方法創(chuàng)建的。
每個函數(shù)都有自己的執(zhí)行環(huán)境,當執(zhí)行流進入一個函數(shù)時,函數(shù)的環(huán)境就會被推入一個環(huán)境棧中,在函數(shù)執(zhí)行之后,棧將其彈出,將控制權返回給之前的執(zhí)行環(huán)境。
當代碼在一個環(huán)境中執(zhí)行時,會創(chuàng)建變量對象的一個作用域鏈,作用域鏈的用途是保證對執(zhí)行環(huán)境有權訪問的所有變量和函數(shù)的有序訪問。作用域鏈的前端始終是當前指行代碼所在的變量對象,作用域鏈中下一個變量對象來自外部環(huán)境,再下一個變量對象來自下一個外部環(huán)境,這樣一直延續(xù)到全局環(huán)境,全局執(zhí)行環(huán)境的變量對象始終是作用域鏈的最后一個對象。
標識符解析是沿著作用域鏈一級一級地搜索標識符的過程。搜索過程始終從作用域鏈的前端開始,然后逐級地向后回溯,直到找到標識符為止。

這里寫圖片描述

內(nèi)部環(huán)境可以通過作用域鏈訪問所有的外部環(huán)境,但外部環(huán)境不能訪問內(nèi)部環(huán)境中的任何變量和函數(shù)。

無塊級作用域

JavaScript中沒有塊級作用域,例如:

if(true){
 var color = "blue";
}
alert(color);  //"blue"

在函數(shù)中未使用var聲明的變量會被成全局變量,例如:

function add(num1,num2){
 sum = num1 + num2;
 return sum;
}
var result = add(10,20);
alert(sum);  //30

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 使用javascript實現(xiàn)監(jiān)控視頻播放并打印日志

    使用javascript實現(xiàn)監(jiān)控視頻播放并打印日志

    這篇文章主要介紹了使用javascript實現(xiàn)監(jiān)控視頻播放并打印日志的方法及示例代碼分享,非常不錯,需要的朋友可以參考下
    2015-01-01
  • js實現(xiàn)的美女瀑布流效果代碼

    js實現(xiàn)的美女瀑布流效果代碼

    美女瀑布流效果分享一下,大家勿噴啊 借用新浪的美女 嘿嘿 睜大你的眼睛
    2012-11-11
  • JS中如何輕松遍歷對象屬性的方式總結(jié)

    JS中如何輕松遍歷對象屬性的方式總結(jié)

    這篇文章主要給大家總結(jié)介紹了關于在JS中如何輕松遍歷對象屬性的方式,文中通過示例代碼介紹的非常詳細,對大家學習或者使用JS具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-08-08
  • javascript canvas時鐘模擬器

    javascript canvas時鐘模擬器

    這篇文章主要為大家詳細介紹了javascript canvas時鐘模擬器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • JS實現(xiàn)頁面滾動到關閉時的位置與不滾動效果

    JS實現(xiàn)頁面滾動到關閉時的位置與不滾動效果

    這篇文章主要介紹了JS實現(xiàn)頁面滾動到關閉時的位置與不滾動效果,滾動有兩種方案,其一,利用路由中的meta,在離開頁面時緩存 top 信息,其二,利用keep-alive緩存整個頁面。但是僅限于沒有實時數(shù)據(jù)變動的頁面,需要的朋友可以參考下本文
    2022-06-06
  • js刪除數(shù)組元素、清空數(shù)組的簡單方法(必看)

    js刪除數(shù)組元素、清空數(shù)組的簡單方法(必看)

    下面小編就為大家?guī)硪黄猨s刪除數(shù)組元素、清空數(shù)組的簡單方法(必看)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • H5上傳本地圖片并預覽功能

    H5上傳本地圖片并預覽功能

    這篇文章主要為大家詳細介紹了H5上傳本地圖片并預覽的實現(xiàn)代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • JavaScript 組件之旅(四):測試 JavaScript 組件

    JavaScript 組件之旅(四):測試 JavaScript 組件

    本期,我們要討論的話題是 JavaScript 的測試,以檢查組件的狀態(tài)和工作方式是否符合預期,還會介紹一個可以方便編寫測試用例的測試方法。這里說的測試當然是使用自動化的測試手段,這是軟件質(zhì)量保證(QA)的重要環(huán)節(jié)。
    2009-10-10
  • js彈出確認是否刪除對話框

    js彈出確認是否刪除對話框

    這篇文章主要介紹了js彈出確認是否刪除對話框,具體實現(xiàn)代碼如下,需要的朋友可以參考下
    2014-03-03
  • 網(wǎng)頁中的圖片查看器viewjs使用方法

    網(wǎng)頁中的圖片查看器viewjs使用方法

    下面小編就為大家?guī)硪黄W(wǎng)頁中的圖片查看器viewjs使用方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07

最新評論

富宁县| 栖霞市| 永福县| 鄂托克旗| 桑日县| 阳江市| 柯坪县| 池州市| 贵德县| 义马市| 耿马| 岳阳市| 梨树县| 三原县| 双鸭山市| 融水| 青冈县| 襄城县| 罗定市| 安岳县| 阜平县| 永安市| 保康县| 垦利县| 南靖县| 福清市| 鹿邑县| 牡丹江市| 景德镇市| 将乐县| 锡林郭勒盟| 永德县| 桃园县| 土默特右旗| 古田县| 潍坊市| 太谷县| 阳高县| 鹿泉市| 比如县| 商丘市|