JavaScript函數(shù)定義的常見注意事項小結(jié)
本文就javascript函數(shù)定義的常見問題進行了總結(jié)。包含了初學者常犯的錯誤。分享給大家供大家參考。具體總結(jié)如下:
1. 函數(shù)聲明的同時JS引擎還定義了一個與函數(shù)名同名的變量,我們在調(diào)用這個函數(shù)的時候?qū)嶋H上是在使用這個變量,且它可以在函數(shù)聲明之前調(diào)用,例如
foo(); //這里實際上是使用了一函數(shù)變量
function foo() {
alert('hello');
}
2. 函數(shù)表達式,此時將匿名函數(shù)賦值給了一變量,此變量需在定義后使用,例如
foo(); //報錯,未定義
var foo = function() {
alert('hello');
}
3. 函數(shù)表達式(with函數(shù)名),這種用法最好避免,此時非IE瀏覽器中該函數(shù)名只在內(nèi)部可用,例如
bar(5); //報錯,未定義
var bar = function foo(n) {
if (n == 1)
return 1;
else
return n * foo(n - 1);
}
foo(5); //非IE報錯,未定義
bar(5); //正確
4. 用Function構(gòu)造函數(shù)定義,這種方式效率低,每次執(zhí)行函數(shù)的時候,其函數(shù)體都會被解析一次。此外這樣聲明的函數(shù)是不會繼承當前聲明位置的作用域,它默認只會擁有全局作用域,例如
function foo() {
var bar = 'hello';
return Function('alert(bar)'); //報錯,全局變量bar未定義
}
foo()();
相信本文所述對大家javascript WEB程序設(shè)計的學習有一定的借鑒價值。
相關(guān)文章
JavaScript使用structuredClone實現(xiàn)深拷貝
在JavaScript中,實現(xiàn)深拷貝的方式有很多種,每種方式都有其優(yōu)點和缺點,今天介紹一種原生JavaScript提供的structuredClone實現(xiàn)深拷貝,文中通過代碼示例給大家介紹的非常詳細,需要的朋友可以參考下2024-03-03
深入淺析JavaScript中的arguments對象(強力推薦)
這篇文章主要介紹了JavaScript中的arguments對象(強力推薦)的相關(guān)資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下2016-06-06
JS基于ocanvas插件實現(xiàn)的簡單畫板效果代碼(附demo源碼下載)
這篇文章主要介紹了JS基于ocanvas插件實現(xiàn)的簡單畫板效果,結(jié)合實例形式分析了ocanvas插件實現(xiàn)畫板的相關(guān)技巧,并附代碼demo源碼供讀者下載參考,需要的朋友可以參考下2016-04-04

