js函數(shù)和變量提升哪個優(yōu)先 JS:聲明函數(shù)時里面的參數(shù)是不是必須寫?
JS:聲明函數(shù)時里面的參數(shù)是不是必須寫?VaR聲明的變量的作用域不是當(dāng)前函數(shù)聲明的變量。如果直接賦值,變量將自動創(chuàng)建,但作用域是全局的。///--functiondosth(){a=“AAA”}dos
JS:聲明函數(shù)時里面的參數(shù)是不是必須寫?
VaR聲明的變量的作用域不是當(dāng)前函數(shù)聲明的變量。如果直接賦值,變量將自動創(chuàng)建,但作用域是全局的。///--functiondosth(){a=“AAA”}dosth()//運行dosthalert(a)//您可以看到“AAA”//--if var//--functiondosth(){vara=“AAA”}dosth()//運行dosth一次警報(a)//錯誤
!變量未定義,因為dosth中聲明的變量范圍只是一個dosth函數(shù)。///另外,如果函數(shù)是嵌套的,會使情況更加復(fù)雜-----在函數(shù)定義中,聲明的函數(shù)參數(shù)作用域就是函數(shù)本身。如果參數(shù)聲明中出現(xiàn)var,則屬于語法錯誤
JS函數(shù)定義靈活,不同于其他語言。每個函數(shù)都作為一個對象進行維護和運行。我們先來看看幾個常見的定義:function func1([parameter]){/*function body*/}var func2=function([parameter]){/*function body*/}var func3=function func4([parameter]){/*function body*/}var func5=new function()。第一種是最常用的,不用說。第二種方法是通過調(diào)用func2([function])將匿名函數(shù)賦給變量。第三種方法是通過調(diào)用func3([function])或func4([function]),將func4賦給變量func3。第四種方法是將func5聲明為對象。讓我們看看它們之間的區(qū)別:function(){//function body}//等價于var func=function(){//function body},但它也是一個函數(shù)定義,在用法上有一些區(qū)別。第三個定義可以用同樣的方式理解。定義對象的第四種方法是在對象被引用之前聲明它們。