十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
不是一個(gè)東西,一般來(lái)說(shuō),js執(zhí)行環(huán)境就是瀏覽器。作用域應(yīng)該說(shuō)的是js變量、對(duì)象、函數(shù)的作用域,主要是變量的生存周期,就是說(shuō)再執(zhí)行哪些代碼之后,這個(gè)變量就沒(méi)有用了。
鄂托克前網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站設(shè)計(jì)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)2013年開(kāi)創(chuàng)至今到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
作用域于參數(shù)類型無(wú)關(guān),也就是說(shuō)不管參數(shù)是函數(shù)還是其他類型,這個(gè)參數(shù)的作用域只在接收這個(gè)參數(shù)的函數(shù)內(nèi)有效,如下:
function?test(callback){
if(typeof?callback?==?"function"){
callback();
}
//此時(shí)這個(gè)參數(shù)的作用域只在test這個(gè)函數(shù)內(nèi)有效,其他地方都是無(wú)效的。
}
this是一個(gè)指針類型,一般情況下是指向調(diào)用該方法或者屬性的對(duì)象本身,除非指定了this的指向,否則都是指向window對(duì)象,下面這段代碼希望對(duì)你的理解有幫助。
var?obj?=?{
fun:function(){
this.log("這個(gè)地方的this即為obj對(duì)象");
},
log:function(text){
console.log(text);
//當(dāng)然這里的this也是指向obj對(duì)象的
}
}
function?stu(){
this.getAge?=?function(){
//此時(shí)這里的this指向stu類的實(shí)例,即指向下面注釋代碼中的stuObj對(duì)象
//var?stuObj?=?new?stu();
//stu.getAge();
}
}
function?callback(){
//此時(shí)這里的this指向下面被注釋代碼中的obj,因?yàn)樗謩?dòng)指定了this對(duì)象
//除了call可以手動(dòng)指定this之外apply也可以指定this指向
//var?obj?=?{name:"小明"};
//callback.call(obj);
}
除了以上幾種情況下,還有一種情況this是指向dom元素本身的,如下:
a?href="#"?onclick="alert(this.href)"這個(gè)this即為這個(gè)a標(biāo)簽本身/a
除了以上幾種情況,this都是指向window對(duì)象的,當(dāng)然不排除有一些我不清楚的情況。
變量作用域是任何一種程序,都存在的問(wèn)題!
通俗地講就是一個(gè)變量在多大的范圍里有效,也就是能夠訪問(wèn)!
用JS打個(gè)比方
script type="text/javascript"
var a = 'hello';
function test(){
var b = 'world';
alert(a);//將提示 hello
alert(b);//將提示 world
}
alert(a);//將提示 hello
alert(b);//將提示 undefined 也就是說(shuō)變量不存在,這是因?yàn)閎的變量作用于只局限在 函數(shù) test內(nèi)部。
/script
js能劃分作用域的只有function,塊級(jí)作用域指的是定義在條件或循環(huán)分支中的,像你舉的這個(gè)函數(shù)例子,test定義在for循環(huán)之內(nèi),再for循環(huán)之外也能訪問(wèn)what變量 (這是js的變量提升,可以查一下,它會(huì)把what提升到test函數(shù)的最開(kāi)頭定義)function test(){
for(var i=0;i3;i++){
var what = "haha";
} console.log(what);
}
test();
如果你這段代碼換成Java的,是下面這樣的:private void test(){
for(int i=0;i3;i++){
String what =“123";
}
System.out.println(what);
?
這個(gè)方法是編譯不通過(guò)的,因?yàn)閣hat的作用域只在for循環(huán)之內(nèi),為塊級(jí)作用域。