繁体   English   中英

console.log以及使用Node.js和CoffeeScript执行功能

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM