我正在开发一个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,但不知道最后一个。
如果我将第三个更改为第二个,是否会出现问题?
第三种类型的优点和缺点是什么?
为什么特别使用它?
答案 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>
答案 1 :(得分:0)
第三个被分配到全局范围(浏览器中的window
,节点环境中的global
),因此它可以在任何地方访问,例如console
对象。
答案 2 :(得分:0)
window.f1 = function(){}
==&GT;因为您将它附加到窗口,它将明确地使您的函数全局化并可从任何地方访问
funtion f1(){}
和var vaiable = f1(){}
==&gt;这样,您的函数可以是全局函数还是本地函数,具体取决于它们是否封装在另一个函数中。
答案 3 :(得分:0)
所有三个声明的函数声明/表达式也将产生全局函数。但请注意第三个函数表达式:
window.f1 = function(){};
在浏览器中运行良好,但由于全局对象的不同,会在Node等其他环境中抛出错误。