繁体   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