2017-05-26 99 views
1

buffer必須通過調用返回function返回String,我創建buffer('Hello')爲什麼不輸出字符串「nullfalse」?

/** 
 
* Function makeBuffer 
 
* @returns {String} 
 
*/ 
 
function makeBuffer() { 
 
    let str = ''; 
 
    return function(...rest) { 
 
     if (rest.length === 0) { 
 
      return str; 
 
     } 
 
     str += rest; 
 
     str.toString(); 
 
    }; 
 
}; 
 
/** 
 
* Starting unit-test 
 
* @returns {String} 
 
*/ 
 
;(function() { 
 
    let buffer; 
 
    beforeEach(function() { 
 
    buffer = makeBuffer(); 
 
    }); 
 
    
 
    it("returns String", function() { 
 
    buffer(null); 
 
    buffer(false); 
 
    assert.equal(buffer(), "nullfalse"); 
 
    }); 
 
})() 
 

 

 
var buffer = makeBuffer(); 
 

 
buffer('Hello'); 
 
buffer(' my'); 
 
buffer(' world'); 
 

 
console.log(buffer());
<html> 
 

 
<head> 
 
    <meta charset="utf-8"> 
 
    <script src="https://js.cx/test/libs.js"></script> 
 
</head> 
 

 
<body> 
 
</body> 
 

 
</html>

回答

1

這是因爲

[null].toString() == "" 
[false].toString() == "false" 

嘗試

function makeBuffer() { 
    let str = ''; 
    return function(...rest) { 
     if (rest.length === 0) { 
      return str; 
     } 
     str += rest.map(e => { return "" + e }).join(""); 
    }; 
}; 
+0

理解)謝謝) –

相關問題