1、寫一個按照下面方式調用都能正常工作的 sum 方法
console.log(sum(2,3)); // Outputs 5 console.log(sum(2)(3)); // Outputs 5
解決方案
function sum() {var fir = arguments[0];if (arguments.length === 2) {return arguments[0] + arguments[1]} else {return function (sec) {return fir + sec;}} } sum(2)(5)
2、下面的代碼會輸出什么?為什么?
var arr1 = "john".split(''); j o h n var arr2 = arr1.reverse(); n h o j var arr3 = "jones".split(''); j o n e s arr2.push(arr3); console.log("array 1: length=" + arr1.length + " last=" + arr1.slice(-1)); console.log("array 2: length=" + arr2.length + " last=" + arr2.slice(-1));
- reverse() 會改變數組本身,并返回原數組的引用。
- slice() 方法可提取字符串的某個部分,并以新的字符串返回被提取的部分。
stringObject.slice(start,end); arrayObject.slice(start,end);
- start和end如果是負數,則該參數規定的是從字符串的尾部開始算起的位置。也就是說,-1 指字符串的最后一個字符,-2 指倒數第二個字符,以此類推。
3、下面的代碼會輸出什么?為什么?
1 console.log(1 + "2" + "2"); 2 console.log(1 + +"2" + "2"); 3 console.log(1 + -"1" + "2"); 4 console.log(+"1" + "1" + "2"); 5 console.log( "A" - "B" + "2"); 6 console.log( "A" - "B" + 2);
我們先來看幾條規則:
- 數字字符串之前存在數字中的正負號(+/-)時,會被轉換成數字
console.log("類型:"+(typeof '3')+" 內容為:"+'3') //類型:string 內容為:3 console.log("類型:"+(typeof +'3')+" 值為:"+(+'3')) //類型:number 值為:3 console.log("類型:"+(typeof -'3')+" 值為:"+(-'3')); //類型:number 值為:-3
- (字符串 + 數字) 或者 (數字+字符串) ,都得到一個字符
console.log(5 + 'A'); //5A console.log('A' + 5); //A5 console.log(NaN + 'A'); //NaNA console.log('A' + NaN); //ANaN
- 對于運算結果不能轉換成數字的,將返回 NaN
console.log('a' * 'sd'); //NaN console.log('A' - 'B'); // NaN
- 其他的一些例子
console.log('-3' - 2 + 1); //-4 number類型 console.log( 3 + '-2' + 1); //3-21 string類型 console.log( 3 - '-2' + 1); //6 number類型
- 也許我們已經有答案了
1 console.log(1 + "2" + "2"); // "122" 2 console.log(1 + +"2" + "2"); // "32" 3 console.log(1 + -"1" + "2"); // "02" 4 console.log(+"1" + "1" + "2"); //"122" 5 console.log( "A" - "B" + "2"); // "NaN2" 6 console.log( "A" - "B" + 2); //NaN
?(未完待續)
?