我正在编写一段javascript代码,其中的函数有三种不同的定义方式。
funtion f1(){}第二个
var vaiable = f1(){}第三
window.f1 = function(){}我读过前两个here,但不知道最后一个。
如果我把第三个换成第二个会有问题吗?
第三种类型的利弊是什么?
为什么要特别使用它?
发布于 2017-08-28 20:04:33
// 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>发布于 2017-08-28 19:57:06
第三个被分配给全局作用域(浏览器中的window,节点环境中的global ),因此它可以在任何地方访问,比如console对象。
发布于 2017-08-28 20:04:43
window.f1 = function(){} ==>由于您将其附加到window,因此它将显式地使您的函数成为全局的,并且可以从任何地方访问
funtion f1(){}和var vaiable = f1(){} ==>通过这种方式,你的函数可以是全局的,也可以是局部的,这取决于它们是否被封装在另一个函数中。
https://stackoverflow.com/questions/45918379
复制相似问题