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

时间:2017-08-28 11:54:49

标签: javascript function

我正在开发一个javascript代码,其中函数以三种不同的方式定义。

     $query = $dbh->prepare("UPDATE table
     SET price_client=:price_client
     WHERE date between '04-04' and '06-10");

和第二

funtion f1(){}

和第三

var vaiable = f1(){}

我已经阅读了前两个here,但不知道最后一个。

如果我将第三个更改为第二个,是否会出现问题?

第三种类型的优点和缺点是什么?

为什么特别使用它?

4 个答案:

答案 0 :(得分:1)

// 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/en-US/docs/Web/JavaScript/Reference/Statements/var#Implicit_globals_and_outer_function_scope

答案 1 :(得分:0)

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

答案 2 :(得分:0)

window.f1 = function(){} ==&GT;因为您将它附加到窗口,它将明确地使您的函数全局化并可从任何地方访问

funtion f1(){}var vaiable = f1(){} ==&gt;这样,您的函数可以是全局函数还是本地函数,具体取决于它们是否封装在另一个函数中。

答案 3 :(得分:0)

所有三个声明的函数声明/表达式也将产生全局函数。但请注意第三个函数表达式:

window.f1 = function(){};

在浏览器中运行良好,但由于全局对象的不同,会在Node等其他环境中抛出错误。