1

node.js API 对参数引用有效,还是仅对返回值有效?

例如,myPath如果我这样做,将得到规范化:

var path = require('path'),
    myPath = "my/path";
    path.normalize(myPath);

或者它只会以这种方式工作:

    myPath = path.normalize("my/path");

我只是好奇。

编辑:这里精彩而简洁的解释:https ://stackoverflow.com/a/3638034/1049693

4

2 回答 2

1

抱歉,第一次没有正确阅读您的问题。

NodeJS 是一个带有大量库和事件循环的 JavaScript 引擎。更具体地说,NodeJS 使用与 Google Chrome (V8) 相同的 JavaScript 引擎。

在 JavaScript 中,字符串是原始值类型,而且是不可变的(通常是值类型)。因此,您要传递一个值而不是参考。在 JavaScript 中的函数内无法更改字符串的值。

var a = "Some String";
myFunction(a);
console.log(a);// We can know for sure that `a` is still "Some String"*

如果这仍然不清楚,您可能需要检查这个关于 JavaScript 如何传递变量的问题。

* 除非 myFunction 在同一个闭包中定义或显式访问变量本身,即使在这种情况下,字符串a本身也不会改变。

于 2013-07-25T18:12:35.583 回答
1

使用第二个,因为第一个不会更改 myPath 的值,而是返回一个已规范化的新字符串。或作为另一种选择

myPath = "my/path";
myPath = path.normalize(myPath);

我喜欢这个只是因为它增加了一点灵活性。稍后说您想在规范化之前对myPath 进行更多操作。然后,您可以让行单独进行规范化并在上面添加其他逻辑。大多数情况下,如果可能的话,我只是喜欢在函数顶部进行字符串分配......

于 2013-07-25T18:19:14.997 回答