如果声明没有按预期返回

时间:2015-07-23 05:15:19

标签: javascript function

我可能看起来真的很蠢,但这段代码让我很沮丧。

if(fs.exist(parametters[0])){
  fs.remove(parametters[0]);
  return "removed";
}else{
  return "doesn't exist"
}

问题是,fs.remove()实际上已被调用,但函数正在返回"doesnt't exist",我错过了什么吗?

我没有使用nodejs,这是我创建的一个库,是异步的。 它不是修改参数,但它确实改变了条件,可能是吗?

我正在发布我的fs对象,尽管我认为这不会改变任何内容。

 fs = {
        load: function() {
            if (localStorage[0] == undefined || localStorage[0] == "undefined" || localStorage[0] == "") {
                localStorage[0] = JSON.stringify(fs.files);
            } else {
                fs.files = JSON.parse(localStorage[0]);
            }
        },
        save: function() {
            localStorage[0] = JSON.stringify(fs.files);
        },
        files: [],
        newFile: function(name, content, overwrite) {
            if (overwrite == undefined)
                overwrite = true;
            if (fs.exist(name) && overwrite) {
                fs.find(name).content = content;
                fs.save();
            }
            if (!(fs.exist(name))) {
                fs.files.push({
                    name: name,
                    content: content
                });
                fs.save();
            }
        },
        exist: function(fileName) {
            for (var i = 0; i < fs.files.length; i++) {
                if (fs.files[i].name == fileName)
                    return true;
            }
            return false;
        },
        find: function(fileName) {
            for (var i = 0; i < fs.files.length; i++) {
                if (fs.files[i].name == fileName)
                    return fs.files[i];
            }
            return false;
        },
        format: function() {
            fs.files = [];
            localStorage[0] = undefined;
        },
        write: function(name, content, overwrite) {
            if (overwrite == undefined)
                overwrite = true;
            if (fs.exist(name) && overwrite) {
                fs.find(name).content = content;
                fs.save();
            }
            if (!(fs.exist(name))) {
                fs.files.push({
                    name: name,
                    content: content
                });
                fs.save();
            }
        },
        remove: function(file) {
            var arrToreturn = [];
            for (var i = 0; i < fs.files.length; i++) {
                if (fs.files[i].name != file)
                    arrToreturn.push(fs.files[i]);
            }
            fs.files = arrToreturn;
            fs.save();
            return arrToreturn;
        }
    }

已解决 - 在检查代码几天后,我发现函数被调用两次的错误,代码量非常大,所以花了我一段时间。

4 个答案:

答案 0 :(得分:0)

您需要在return "doesn't exist"中添加一个分号,它应该是return "doesn't exist";

答案 1 :(得分:0)

如果这是一个对象,它仍然有效。

我们可以假设这是一个File对象ARRAY,indexOf仍然可以查找该项是否存在。

请看下面的例子:

var fruits = [“Banana”,“Orange”,“Apple”,“Mango”]; var a = fruits.indexOf(“Apple”);

如果找到Apple,结果为2 如果找不到Apple,结果为-1

您可以在此链接中添加更多选项:http://www.w3schools.com/jsref/jsref_indexof_array.asp

由于

答案 2 :(得分:-1)

您可以尝试使用javascript indexOf函数来检查该值是否真的存在,在删除操作之前。

以下示例:

var str = "Hello world, welcome to the universe.";
var n = str.indexOf("welcome"); 

=&GT;如果找到则给出13    如果我们搜索“welcome1” - &gt;会给-1

答案 3 :(得分:-1)

使用此代码解决此问题。感谢

var fs = require(&#39; fs-extra&#39;)

fs.remove(&#39; / tmp / myfile&#39;,function(err){   if(错误)返回console.error(错误)

的console.log(&#39;成功&#39;!) })

fs.removeSync(&#39; / home / jprichardson&#39;)//我刚删除了整个HOME目录。