簡體   English   中英

在javascript中,window.function(){}和var variable = function有什么區別?

[英]In javascript, what is the difference between window.function(){} and var variable = function?

我正在研究以三種不同方式定義功能的javascript代碼。

funtion f1(){}

第二

var vaiable = f1(){}

第三

window.f1 = 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>

請查看https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/var#Implicit_globals_and_outer_function_scope

第三個分配給全局范圍(瀏覽器中的window ,Node環境中的global ),因此可以在任何地方訪問,例如console對象。

window.f1 = function(){} ==>由於您將其附加到窗口,因此它將顯式地使您的函數成為全局函數,並且可以從任何地方訪問

funtion f1(){}var vaiable = f1(){} ==>這樣,根據您的函數是否封裝在另一個函數中,它可以是全局函數或局部函數。

所有三個聲明的函數聲明/表達式也將產生全局函數。 但是請注意第三個函數表達式:

window.f1 = function(){};

可以在瀏覽器中很好地工作,但由於全局對象的差異,在其他環境(例如Node)中會引發錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM