1、請修復給定的 js **中,函式定義存在的問題
//看返回值 getvalue(),原本的函式定義便不符合需求,以變數的形式儲存,方便呼叫
function functions(flag) //function getvalue()
} else //function getvalue()
}return getvalue();
}
2、修改 js **中 parseint 的呼叫方式,使之通過全部測試用例。
如輸入:'12px',輸出:12
function parse2int(num)
return parseint(num.slice(0,i));
}
3、實現乙個打點計時器,要求
(1)、從 start 到 end(包含 start 和 end),每隔 100 毫秒 console.log 乙個數字,每次數字增幅為 1
(2)、返回的物件中需要包含乙個 cancel 方法,用於停止定時操作
(3)、第乙個數需要立即輸出
方法一:setinterval和clearinterval,setinterval方法主要是呼叫函式執行
function count(start, end) ,100);
return
}}方法二:settimeout和cleartimeout,settimeout方法主要是採用遞迴的方式執行
function count(start, end) ,100);
}return
}}
4、實現 fizzbuzz 函式,引數 num 與返回值的關係如下:
(1)如果 num 能同時被 3 和 5 整除,返回字串 fizzbuzz
(2)如果 num 能被 3 整除,返回字串 fizz
(3)如果 num 能被 5 整除,返回字串 buzz
(4)如果引數為空或者不是 number 型別,返回 false
(5)其餘情況,返回引數 num
function fizzbuzz(num) else if(num%5==0) return 'buzz';
else if(num%3==0) return 'fizz';
return num;
}
5、將陣列 arr 中的元素作為呼叫函式 fn 的引數。
輸入:function (greeting, name, punctuation) , ['hello', 'ellie', '!']
輸出:hello, ellie!
//函式名.call(上下文,各引數)
function argsasarray(fn, arr)
6、將函式 fn 的執行上下文改為 obj 物件
輸入:function () ,
輸出:hello, rebecca!!!
//方法一:利用bind繫結函式的上下文,再呼叫函式
function speak(fn, obj)
//方法二:call第乙個引數為函式的上下文,對第乙個引數進行賦值即可
function speak(fn, obj)
function speak(fn, obj)
7、實現函式 functionfunction,呼叫之後滿足如下條件:
(1)返回值為乙個函式 f
(2)呼叫返回的函式 f,返回值為按照呼叫順序的引數拼接,拼接字元為英文逗號加乙個空格,即 ', '
(3)所有函式的引數數量為 1,且均為 string 型別
輸入:functionfunction('hello')('world')
輸出:hello, world
//此函式僅限案例中輸入輸出的格式,函式名(引數一)(引數二)
function functionfunction(str)
}
8、實現函式 makeclosures,呼叫之後滿足如下條件:
(1)返回乙個函式陣列 result,長度與 arr 相同
(2)執行 result 中第 i 個函式,即 result[i](),結果與 fn(arr[i]) 相同
輸入:[1, 2, 3], function (x)
輸出:4
//此題主要考察的是陣列內如何存放函式,將函式壓入到陣列內,直接將陣列返回即可。
function makeclosures(arr, fn) )
})return newarray;
}
9、已知函式 fn 執行需要 3 個引數。請實現函式 partial,呼叫之後滿足如下條件:
(1)返回乙個函式 result,該函式接受乙個引數
(2)執行 result(str3) ,返回的結果與 fn(str1, str2, str3) 一致
輸入:var sayit = function(greeting, name, punctuation) ; partial(sayit, 'hello', 'ellie')('!!!');
輸出:hello, ellie!!!
//此題主要是partial對fn的乙個二次封裝函式
function partial(fn, str1, str2)
return result;
}
10、函式 usearguments 可以接收 1 個及以上的引數。請實現函式 usearguments,返回所有呼叫引數相加後的結果。本題的測試引數全部為 number 型別,不需考慮引數轉換。
輸入:1, 2, 3, 4
輸出:10
//此題的重點是利用函式的arguments,獲取此函式傳遞的引數
function usearguments()
12、實現函式 partialusingarguments,呼叫之後滿足如下條件:
(1)返回乙個函式 result
(2)呼叫 result 之後,返回的結果與呼叫函式 fn 的結果一致
(3)fn 的呼叫引數為 partialusingarguments 的第乙個引數之後的全部引數以及 result 的呼叫引數
//利用arguments獲取呼叫函式時傳遞的引數,此處需要注意,arguments在哪個函式內部,便獲取該函式呼叫時引數
function partialusingarguments(fn)
return result;
}
13、已知 fn 為乙個預定義函式,實現函式 curryit,呼叫之後滿足如下條件:
(1)返回乙個函式 a,a 的 length 屬性值為 1(即顯式宣告 a 接收乙個引數)
(2)呼叫 a 之後,返回乙個函式 b, b 的 length 屬性值為 1
(3)呼叫 b 之後,返回乙個函式 c, c 的 length 屬性值為 1
(4)呼叫 c 之後,返回的結果與呼叫 fn 的返回值一致
(5)fn 的引數依次為函式 a, b, c 的呼叫引數
輸入:var fn = function (a, b, c) ; curryit(fn)(1)(2)(3);
輸出:6
//方法一:利用區域性遞迴的方式執行內部函式,直至函式內部return
function curryit(fn)
return result;
}//方法二:利用函式簽到函式的方式進行,此方法僅限三個括號即函式名(fn)(引數一)(引數二)(引數三)
function curryit(fn) }}
}
結束語: JS能力測評經典題之Number型別
獲取數字 num 二進位制形式第 bit 位的值。注意 1 bit 從 1 開始 2 返回 0 或 1 3 舉例 2 的二進位制為 10,第 1 位為 0,第 2 位為 1 輸入例子 valueatbit 128,8 輸出例子 1function valueatbit num,bit 注意 num....
JS能力測評45 判斷是否符合 USD 格式
思路 本題注意點有必須是usd格式,以 開頭,數字結尾,和小數點的轉義。首先,開頭必是 而正規表示式中 表示結尾,需要進行轉義,因此開頭為 然後 後必然接數字,並且最少一位,最多三位數,可用表示,最少m位,最多n位,因此此段為 d 接著,後面如還有數,則必然有,分隔,並且後面必有3個數,類似於,的格...
經典JS閉包題
在逛部落格時,看見乙個很有意思的閉包題,發現自己對閉包沒有完全理解,故記錄下來。先看題目 function fun n,o var a fun 0 a.fun 1 a.fun 2 a.fun 3 undefined,var b fun 0 fun 1 fun 2 fun 3 undefined,va...