2014-03-03 66 views
0

我剛開始使用js編程,所以只是試着把語法弄清楚。javascript fs.replace callback err catch

我想我理解回調函數的用法,但有時候這會讓我感到困惑。

例如,看看這段代碼。

#!/usr/bin/env node 

var fs = require('fs'), 
oldPath = './input.js'; 

var tmp = oldPath.replace('wrong', 'output', function (err) { 
    if(err) 
     console.log('rename callback ', err); 
}); 

在這段代碼中,我預計'if(err)'stats會捕獲錯誤狀態,因爲oldPath不包含'錯誤'字符串。 但它沒有發生。

最後,我想要做的是'在目錄中更改多個文件名'。 所以我做了一些js腳本,它在shell上運行的很好,但是,我想捕捉錯誤情況,例如 找不到匹配的文件名稱。

請參閱此網址,並提前謝謝。 https://github.com/nicejwjin/jsScript_FileRename/blob/master/change_filename

PS。在javascript文檔的參考資料中,我無法理解API爲什麼對此表達式沒有任何意見。 喜歡這個。 http://nodejs.org/api/fs.html#fs_fs_rename_oldpath_newpath_callback

它只是顯示函數名稱和參數名稱,然後回調,這就是全部。 我想我必須知道如何弄清楚文檔,回調或其他參數的用法..

非常感謝。

回答

0

字符串的替換方法是同步的 - 它沒有像大多數node.js函數那樣的異步回調。它取代了與第二的第一個參數的第一個實例,如果它沒有任何地方找到的第一個參數,然後將它與任何修改返回本身:

"a b a b".replace("a", "cc") // returns "cc b a b" 
"a b a b".replace("x", "yy") // returns "a b a b" 

要檢測的第一個參數實際上出現在字符串,你可以使用indexOf:

if (str.indexOf("hello") === -1) { 
    // str does not contain "hello" 
} else { 
    // str contains "hello" 
}