2013-07-25 32 views
1

node.js APIs是否對參數引用有效,還是隻對返回值有效?node.js APIs是否對參數引用有效,還是隻對返回值有效?

例如,將myPath得到規範化的,如果我這樣做:

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

還是會只以這種方式工作:

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

我只是好奇。

編輯:神奇和簡要說明這裏:https://stackoverflow.com/a/3638034/1049693

+0

我不明白的密切投票 - 人們甚至讀我的問題?這不是關於哪個更好 - 而是關於技術上是否可行。 – pilau

回答

1

對不起,沒有看過你的問題在第一時間。

NodeJS是一個帶有一堆庫和一個事件循環的JavaScript引擎。更具體地說,NodeJS使用與Google Chrome(V8)相同的JavaScript引擎。

在JavaScript中,字符串是primitive value類型和moreover are immutable(通常是值類型)。你是爲passing a value而不是一個參考。在JavaScript中改變函數內部的字符串的值是不可能的。

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

如果這還不清楚,你可能要檢查this question關於JavaScript如何圍繞變量傳遞。

*除非myFunction在同一個閉包中定義,或者對變量本身有明確的訪問權限,即使在這種情況下,字符串a本身也沒有改變。

+0

哦,是的,原始值!我甚至記得閱讀你鏈接的確切問題。謝謝 :) – pilau

1

轉到第二個,因爲第一個不會更改myPath的值,而是會返回一個已標準化的新字符串。或作爲另一種選擇

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

我喜歡這一個只是因爲它增加了一點靈活性。稍後再說,您希望在之前使用myPath 進行更多操作。然後,您可以單獨執行規範化操作,並添加上面的其他邏輯。大多數情況下,我只是在我的功能頂部做字符串分配的粉絲,如果可能的話...

相關問題