国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

javascript的函數作用域

2024-05-06 16:10:35
字體:
來源:轉載
供稿:網友
javascript中沒有塊級作用域。取而代之的javascript使用的是函數作用域(function scope):變量在聲明它的函數體以及這個函數體嵌套的任意函數體內都是有定義的。
 
 

在一些類似c語言的編程語言中,花括號內的每一段代碼都具有各自的作用域,而且變量在聲明他們的代碼段之外是不可見的,我們稱為塊級作用域(block scope),而javascript中沒有塊級作用域。取而代之的javascript使用的是函數作用域(function scope):變量在聲明它的函數體以及這個函數體嵌套的任意函數體內都是有定義的。 在如下代碼中,在不同位置定義的i,j和k,他們再同一個作用域內都是有定義的

 

復制代碼代碼如下:

function text(o)   
{   
    var i=0;   
    alert(typeof o);   
    if(typeof o == "string")   
    {   
        var j=0;   
        for(var k=0;k<10;k++)   
        {   
            alert(k);//輸出0-9   
        }   
        alert(k);//輸出10   
    }   
    alert(j);//輸出0   
}   

 

  javascript的函數作用域指在函數內部聲明的所有的變量在函數體內始終是可見的。有意思的是,這意味著變量在聲明之前甚至已經可用。javascript的這個特性被非正式的稱為聲明提前(hoisting),即javascript的函數體內聲明的所有的變量(不涉及賦值)都被“提前”至函數體的頂部。看以下代碼

 

復制代碼代碼如下:

var global="globas";   
function globals()   
{   
    alert(global);//undefined   
    var global="hello QDao";   
    alert(global);//hello QDao   
}  

 

由于函數作用域的特性,局部變量在整個函數體始終是有定義的,也就是說在函數體內部變量遮蓋了同名的全局變量。盡管如此在程序執行到var語句的時候,局部變量才會被真正的賦值,因此,上述過程等價于:將函數內的變量聲明“提前”至函數體頂部,同事變量初始化留在原來的位置:

 

復制代碼代碼如下:

var global="globas";   
function globals()   
{   
  
       var global;   
    alert(global);//undefined   
    global="hello QDao";   
    alert(global);//hello QDao   
}  

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 克山县| 唐海县| 浦东新区| 黔江区| 五台县| 张家港市| 株洲市| 罗源县| 潞城市| 雅安市| 凉山| 沙河市| 桃园市| 弥勒县| 简阳市| 兖州市| 普陀区| 禄劝| 建湖县| 民和| 大庆市| 拜泉县| 石首市| 洪洞县| 盐池县| 出国| 保德县| 金寨县| 白水县| 米泉市| 昂仁县| 华池县| 栾川县| 宁阳县| 渭源县| 杭州市| 苏尼特左旗| 平顶山市| 布尔津县| 舞钢市| 定安县|