Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.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_Apply_Array Splice - Fatal编程技术网

Javascript 使用coffeescript进行阵列拼接,_ref用于什么?

Javascript 使用coffeescript进行阵列拼接,_ref用于什么?,javascript,coffeescript,apply,array-splice,Javascript,Coffeescript,Apply,Array Splice,在CoffeeScript文档中,尾随的,\u ref的用途是什么 咖啡脚本: numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] numbers[3..6] = [-3, -4, -5, -6] 汇编至: var numbers, _ref; numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; [].splice.apply(numbers, [3, 4].concat(_ref = [-3, -4, -5, -6])), _re

在CoffeeScript文档中,尾随的
,\u ref
的用途是什么

咖啡脚本:

numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
numbers[3..6] = [-3, -4, -5, -6]
汇编至:

var numbers, _ref;
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
[].splice.apply(numbers, [3, 4].concat(_ref = [-3, -4, -5, -6])), _ref;

这是因为CoffeeScript的切片操作希望返回刚刚分配的切片,但返回已删除的元素


因此,为了实现这一点,它将构造编译成一个代码片段,首先将切片分配给一个本地
\u ref
变量,然后在调用
splice()

+1以链接到逗号运算符后使用返回该变量,道格拉斯·克罗克福德(Douglas Crockford)建议不要使用它,因为它会导致“过于复杂的表达式”,所以我想我只是忘记了它。这可能无法回答,但您知道coffeeScript想要返回其刚刚分配的切片的原因吗?请记住,在本例中,它没有被任何东西使用。。。?谢谢。@AJP,可能是因为无论调用方是否对返回值感兴趣,它都可以生成相同的代码片段。换句话说,在后一种情况下,“优化”
\u ref
可能不值得为编译器带来额外的复杂性。