[英]console.log and execution of function with Node.js and CoffeeScript
我用node编译CoffeeScript。 在脚本中,我有一个清除数组的函数。 我要console.log空数组。 我看不到3个区块日志之间的区别:
clearArray = (arr) ->
arr.splice 0 , arr.length
#Block 1
arr = [1,2]
clearArray arr
console.log arr
#Block 2
array = [1,2]
console.log clearArray array
#Block 3
console.log clearArray [1,2]
#Block 1 logs: []
#Block 2 & 3 log: [ 1, 2 ]
以我的理解,所有块都应记录“ []”并返回一个空数组,因为clearArray返回arr.splice()的结果。 似乎#Block2&3不执行拼接功能?! 任何帮助深表感谢。
Splice()
修改数组并返回包含您删除的元素的数组。
var arr = [1, 2];
var a = arr.splice(0, 2);
console.log(arr);
[]
console.log(a);
[1, 2]
正如Rodrigo所说, splice
返回初始数组,这导致了由Coffee的隐式return语句引起的误解。 您的功能等效于此:
clearArray = (arr) ->
return arr.splice 0 , arr.length
为了解决这个问题,您必须返回切片的数组
clearArray = (arr) ->
arr.splice 0 , arr.length
return arr
再次是相同的
clearArray = (arr) ->
arr.splice 0 , arr.length
arr
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.