x = "fun-6ren">
gpt4 book ai didi

javascript - coffeescript 范围误解

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:35:14 26 4
gpt4 key购买 nike

我试图理解 coffeescript 中的变量范围,但有点困惑,这是一个例子:

CoffeeScript 代码:

  x = "localscope"
z = () ->
x = "functionscope"
console.log(x)

console.log(x)

Javascript编译结果:

(function() {
var x, z;

x = "localscope";

z = function() {
x = "functionscope";
return console.log(x);
};

console.log(x);

}).call(this);

据我所知,在纯 javascript 中,所有包装在函数中的变量都在同一范围内起作用。所以据我所知,所有用 coffescript 编写的变量都是全局的?

最佳答案

要在 coffeescript 中隐藏变量,您需要执行如下操作:

x = "localscope"
z = ((x) -> () ->
x = "functionscope"
console.log(x)
)(x)
console.log(x)

生成的 javascript 是:

var x, z;

x = "localscope";

z = (function(x) {
return function() {
x = "functionscope";
return console.log(x);
};
})(x);

console.log(x);

在您的示例中,x 不是最内层函数的局部变量,而是指您在开始时声明的相同“全局”x。我所说的“全局”是指在同一文件中的任何地方都可以访问。

关于javascript - coffeescript 范围误解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13806010/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com