首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在javascript中,window.function(){}和var variable = function有什么区别?

在javascript中,window.function(){}和var variable = function有什么区别?
EN

Stack Overflow用户
提问于 2017-08-28 19:54:49
回答 4查看 9.2K关注 0票数 7

我正在编写一段javascript代码,其中的函数有三种不同的定义方式。

代码语言:javascript
复制
funtion f1(){}

第二个

代码语言:javascript
复制
var vaiable = f1(){}

第三

代码语言:javascript
复制
window.f1 = function(){}

我读过前两个here,但不知道最后一个。

如果我把第三个换成第二个会有问题吗?

第三种类型的利弊是什么?

为什么要特别使用它?

EN

回答 4

Stack Overflow用户

发布于 2017-08-28 20:04:33

代码语言:javascript
复制
// 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 */ }

如果您将第三种方法更改为第二种方法,它将被绑定到某个作用域(块,它将被放置的位置)。而第三个总是全局的(它可以在任何地方使用)。

请注意,您还可以使用第一种和第二种方法在全局范围内声明函数。例如:

代码语言:javascript
复制
<head>
    <script>function myFunction() {/* body */}</script>
</head>

请看看https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var#Implicit_globals_and_outer_function_scope

票数 5
EN

Stack Overflow用户

发布于 2017-08-28 19:57:06

第三个被分配给全局作用域(浏览器中的window,节点环境中的global ),因此它可以在任何地方访问,比如console对象。

票数 1
EN

Stack Overflow用户

发布于 2017-08-28 20:04:43

window.f1 = function(){} ==>由于您将其附加到window,因此它将显式地使您的函数成为全局的,并且可以从任何地方访问

funtion f1(){}var vaiable = f1(){} ==>通过这种方式,你的函数可以是全局的,也可以是局部的,这取决于它们是否被封装在另一个函数中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45918379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档