Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在coffeescript中使用了某种_ref用法?_Javascript_Coffeescript - Fatal编程技术网

Javascript 在coffeescript中使用了某种_ref用法?

Javascript 在coffeescript中使用了某种_ref用法?,javascript,coffeescript,Javascript,Coffeescript,考虑以下情况:您不能直接访问for循环的数组,例如 for x, y in [1,2,3] console.log x, y, [1,2,3].length 其中需要再次键入数组[1,2,3]以访问其长度。 这可归纳为: var x, y, _i, _len, _ref; _ref = [1, 2, 3]; for (y = _i = 0, _len = _ref.length; _i < _len; y = ++_i) { x = _ref[y]; console.log

考虑以下情况:您不能直接访问for循环的数组,例如

for x, y in [1,2,3]
  console.log x, y, [1,2,3].length
其中需要再次键入数组[1,2,3]以访问其长度。 这可归纳为:

var x, y, _i, _len, _ref;

_ref = [1, 2, 3];
for (y = _i = 0, _len = _ref.length; _i < _len; y = ++_i) {
  x = _ref[y];
  console.log(x, y, [1, 2, 3].length);
}
工作正常,编译时没有任何问题

我可以看出,这种方法可能会在以下情况下产生问题:

for x, y in [1,2,3,4,5,6]
  continue

for x, y in [1,2,3]
  console.log x, y, _ref.length
其中,第二个循环中的
\u ref
是第一个数组
[1,2,3,4,5,6]
,数组
[1,2,3]
被设置为未使用的变量
\u ref1


那么,有没有什么方法可以很好地解决这个问题(除了将一个变量定义为
[1,2,3]
)呢?

为了满足您在不首先将数组放入变量的情况下引用数组的潜在愿望,您可以使用(或其他各种方法,如,等等)。它们接收数组引用作为第三个参数:

[1, 2, 3].forEach (e, i, a) ->
  console.log e, i, a
e
=此迭代的数组中的条目

i
=此迭代的索引

a
=数组引用


不要担心函数调用的运行时成本。请注意,
在回调中具有不同的含义(除非将
thisArg
参数传递给
forEach
)。我不知道CoffeeScript是否为您提供了语法糖,使其不再成为问题(我不使用CoffeeScript).

为了满足您在不首先将数组放入变量的情况下引用数组的潜在愿望,您可以使用(或其他各种方法,如,等等)。它们接收数组引用作为第三个参数:

[1, 2, 3].forEach (e, i, a) ->
  console.log e, i, a
e
=此迭代的数组中的条目

i
=此迭代的索引

a
=数组引用


不要担心函数调用的运行时成本。请注意,
在回调中具有不同的含义(除非将
thisArg
参数传递给
forEach
)。我不知道CoffeeScript是否为您提供了语法糖,使其不再成为问题(我不使用CoffeeScript).

为了满足您在不首先将数组放入变量的情况下引用数组的潜在愿望,您可以使用(或其他各种方法,如,等等)。它们接收数组引用作为第三个参数:

[1, 2, 3].forEach (e, i, a) ->
  console.log e, i, a
e
=此迭代的数组中的条目

i
=此迭代的索引

a
=数组引用


不要担心函数调用的运行时成本。请注意,
在回调中具有不同的含义(除非将
thisArg
参数传递给
forEach
)。我不知道CoffeeScript是否为您提供了语法糖,使其不再成为问题(我不使用CoffeeScript).

为了满足您在不首先将数组放入变量的情况下引用数组的潜在愿望,您可以使用(或其他各种方法,如,等等)。它们接收数组引用作为第三个参数:

[1, 2, 3].forEach (e, i, a) ->
  console.log e, i, a
e
=此迭代的数组中的条目

i
=此迭代的索引

a
=数组引用


不要担心函数调用的运行时成本。请注意,
在回调中具有不同的含义(除非将
thisArg
参数传递给
forEach
)。我不知道CoffeeScript是否为您提供了语法糖,使其不再成为问题(我不使用CoffeeScript).

“那么,有什么方法可以很好地解决这个问题”什么问题?不要直接使用
\u ref
。没问题。:-)虽然现在CoffeeScript编译器的输出中可能存在
\u ref
,但不能保证它在下一版本中不会出现
\r
\u reference
。依赖内部是一个坏主意(tm)@T.J.Crowder在我的例子中,我从两个嵌套函数调用中接收数组,我不想再次调用这些函数来访问数组的长度,当然我可以将数组存储在一个变量中,但就像在for循环中创建变量x,y一样(在本例中)如果有办法访问数组而不必单独定义它,那就太好了。所以问题是我很懒惰,希望数组不定义为外部变量。你所说的关于内部构件的使用似乎是明智的:):-)真的太糟糕了,他们没有在[1,2,3]或其他什么东西中为x,y,a提供
(其中
a
将是对数组的引用),JavaScript在
forEach
中构建的方式,等等(
[1,2,3])。forEach(函数(条目,索引,数组){…}
). 由于第二个
当前是无效语法,您可能会建议他们在将来的版本中使用它。在那之前,是的,变量可能是你最好的选择。:-)@T.J.Crowder哦!D,使用forEach函数对我来说是一个完美的解决方案!如果你想坚持循环并且不想在赋值表达式上有教条式的问题,你也可以
对于e,i in(a=f())
“那么,有什么方法可以很好地解决这个问题”什么问题?不要直接使用
\u ref
。没问题。:-)虽然现在CoffeeScript编译器的输出中可能存在
\u ref
,但不能保证它在下一版本中不会出现
\r
\u reference
。依赖内部是一个坏主意(tm)@T.J.Crowder在我的例子中,我从两个嵌套函数调用中接收数组,我不想再次调用这些函数来访问数组的长度,当然我可以将数组存储在一个变量中,但就像在for循环中创建变量x,y一样(在本例中)如果有办法访问数组而不必单独定义它,那就太好了。所以问题是我很懒惰,希望数组不定义为外部变量。W