![](/img/trans.png)
[英]what is the difference between var a = {} and var a = function(){}
[英]In javascript, what is the difference between window.function(){} and var variable = function?
// this is function declaration in JavaScript
// @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function
function myFunction (/* args */) { /* body */ }
// this is function expression
// @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/function
const/var/let myFunction = function myFunction(/* args */) { /* body */ }
// this is basically (unnamed) function expression, defining property `f1` on global object `window`
window.f1 = function (/* args */) { /* body */ }
如果將第三種方法更改為第二種方法,它將被綁定到某個范圍(將放置該塊的位置)。 盡管第三個始終是全局的(可在任何地方使用)。
請注意,您還可以使用第一種和第二種方法在全局范圍內聲明函數。 例如:
<head>
<script>function myFunction() {/* body */}</script>
</head>
第三個分配給全局范圍(瀏覽器中的window
,Node環境中的global
),因此可以在任何地方訪問,例如console
對象。
window.f1 = function(){}
==>由於您將其附加到窗口,因此它將顯式地使您的函數成為全局函數,並且可以從任何地方訪問
funtion f1(){}
和var vaiable = f1(){}
==>這樣,根據您的函數是否封裝在另一個函數中,它可以是全局函數或局部函數。
所有三個聲明的函數聲明/表達式也將產生全局函數。 但是請注意第三個函數表達式:
window.f1 = function(){};
可以在瀏覽器中很好地工作,但由於全局對象的差異,在其他環境(例如Node)中會引發錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.