簡體   English   中英

將變量傳遞給匿名函數的javascript等效方法

[英]javascript equivalent way of passing variable to anonymous function

在 php 中,我們可以這樣做:

$foo = 1;
$bar = 2;
$fn = function() use ($foo, $bar) {
    return $foo;
};
$foo = 3;
echo $fn(); // gives 1

如何在javascript中做到這一點?

我這樣嘗試,但失敗了:

var foo = 1;
var bar = 2;
var fn = function() { return foo; }.bind(foo,bar);
foo = 3;
console.log(fn()); // gives 3, instead of 1

bind是一種顯式定義this值和傳遞給函數初始參數的值的方法。

可以傳遞給函數的參數是在創建函數時定義的。

var fn = function(foo) { console.log(foo) }

JavaScript 沒有任何功能可以修改函數在創建后接受的參數。

函數的作用域也是在創建時定義的,以后不能更改。 如果您不使用參數名稱foo ,那么它將從定義它的范圍中讀取foo

 var foo = 1; var fn = function(foo) { return foo; }.bind({}, foo); foo = 3; console.log(fn());

或通過上下文

 var foo = 1; var fn = function() { return this.foo; }.bind({foo}); foo = 3; console.log(fn());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM