JS能力測評23:返回函式
思路:
首先執行functionFunction('Hello'),傳入引數str,然後返回函式f,f與('world')組合,執行f('world'),傳入引數s,f返回str+", "+s,即Hello, world。注意中間的逗號後面有一個空格。
function functionFunction(str) {
var f=function(s){
return str+", "+s;
}
return f;
}
相關推薦
JS能力測評23:返回函式
思路: 首先執行functionFunction('Hello'),傳入引數str,然後返回函式f,f與('world')組合,執行f('world'),傳入引數s,f返回str+", "+s,即Hello, world。注意中間的逗號後面有一個空格。 function functionFu
JS能力測評16:正確的函式定義
思路: 這道題是考函式宣告與函式表示式的區別,原題的寫法,是在兩個邏輯分支裡面各有一個函式宣告,但是對於函式宣告,解析器會率先讀取並且讓其在執行任何程式碼前可用,意思就是別的程式碼還沒執行呢,兩個getValue宣告已經被讀取,所以總是執行最新的那個。函式表示式,當解析器執行到它所在的程式碼行時
JS能力測評22:函式的上下文
思路: 在JavaScript中,函式是一種物件,其上下文是可以變化的,對應的,函式內的this也是可以變化的,函式可以作為一個物件的方法,也可以同時作為另一個物件的方法,可以通過Function物件中的call或者apply方法來修改函式的上下文,函式中的this指標將被替換為call或者ap
JS能力測評25:二次封裝函式
思路: partial(sayIt, 'Hello', 'Ellie')('!!!');首先執行partial(sayIt, 'Hello', 'Ellie'),將引數傳入,然後返回函式result與('!!!')組合成result('!!!')執行。於是,可以在result函式裡呼叫fn,因為
JS能力測評7:新增元素
思路: 先複製,在運用unshift()方法。 function prepend(arr, item) { var newarr=arr.slice(0); newarr.unshift(item); return newarr; } 另一個大佬的演算法,複製下來
JS能力測評6:刪除陣列最後一個元素
思路: 先複製在刪除,這樣就不直接修改arr了 function truncate(arr) { newarr=arr.slice(0); newarr.pop(); return newarr; } 人家大佬的思路,值得學習 //利用slice
JS能力測評5:新增元素
思路: 方法1:先運用slice函式複製,然後在運用push函式插入,最後返回。 function append(arr, item) { var newarr=arr.slice(0); newarr.push(item); return newarr; } 方
JS能力測評4:移除陣列中的元素(直接修改arr)
思路: 直接運用splice函式,若arr陣列元素和item相等,則刪除。該處運用了一個技巧,從陣列末尾開始判斷,這樣不用考慮刪除元素而導致位置變化的影響。 function removeWithoutCopy(arr, item) { for(var i=arr.length-1;
JS能力測評3:移除陣列中的元素
思路: 方法1:將陣列中的元素依次和item比較,若不相等則放入新的陣列,反之則捨棄。 function remove(arr, item) { var result=[]; for(var i=0;i<arr.length;i++) { if
JS能力測評2:陣列求和
思路: reduce() 方法接收一個函式作為累加器,陣列中的每個值(從左到右)開始縮減,最終計算為一個值 並返回 function sum(arr) { return arr.reduce(function (total,currentValue) {
JS能力測評1:查詢陣列元素位置
思路: 判斷Aarry的原型是否有indexOf方法,若有則直接運用indexOf方法,若沒有則利用for迴圈。 function indexOf(arr, item) { if(Array.prototype.indexOf) { return(arr.in
JS能力測評17:正確的使用 parseInt
思路: parseInt(string, radix) 當引數 radix 的值為 0,或沒有設定該引數時,parseInt() 會根據 string 來判斷數字的基數。即我們可以指定radix=10,按10進位制去處理字串,碰到非數字字元,會將後面的全部
JS能力測評14:查詢元素位置
思路: function findAllOccurrences(arr, target) { var a=[] for(var i =0;i<arr.length;i++){ if(arr[i]==target){ a.push(i)
JS能力測評13:求二次方
思路: 方法一:map()方法 function square(arr) { return arr.map(function(val){ return val*val; }) } 方法2:forEach()方法 function square(a
JS能力測評12:查詢重複元素
思路: 將傳入的陣列arr中的每一個元素value當作另外一個新陣列b的key,然後遍歷arr去訪問b[value],若b[value]不存在,則將b[value]設定為1,若b[value]存在,則將其加1。可以想象,若arr中陣列沒有重複的元素,則b陣列中所有元素均為1;若arr陣列中存在重
JS能力測評11:計數
思路: 遍歷的方法 function count(arr, item) { var num=0; for(var i=0;i<arr.length;i++) { if (arr[i]==item) { nu
JS能力測評20:流程控制
思路: 根據題目要求,先判斷num是否為空以及是否是Number型別,再依次判斷是否可以整除3,整除5等 function fizzBuzz(num) { if ( num==null || typeof (num)!="number") { return f
JS能力測評19:計時器
思路: function count(start, end) { //第一個數立即輸出 console.log(start++); //利用setInterval方法計算間隔多長時間輸出一個數字 var timer = setInterval(f
JS能力測評18:完全等同
思路: 一般使用雙等來判斷(==),如果還需要型別相同那麼就用三等(===)。 說一下這兩個的區別: == equality 等同,=== identity 恆等。 ==, 兩邊值型別不同的時候,要先進行型別轉換,再比較。 ===,不做型別轉換,型別不同的一定不等。 先說 ===,這個比較簡
JS能力測評24:使用閉包
思想: 簡單的描述閉包:如果在函式func內部宣告函式inner,然後在函式外部呼叫inner,這個過程即產生了一個閉包。 function makeClosures(arr, fn) { var result = []; arr.forEach(function (obj)