妙味公開課 筆試題1

2022-05-04 11:39:09 字數 3763 閱讀 1888

1.下列**輸出的值

console.log(100['tostring']['length']); // 1
console.log(100['tostring']) // 輸出為函式,因為tostring是方法,沒有小括號就是沒有呼叫,所以返回的是函式本身
解釋:函式本身上的length屬性是函式的形參個數,tostring方法有預設引數,表示的進製,所以length為1,所以結果是1

2.**輸出為

var x=1;

function fn(n)

y=fn(x);

console.log(y); // 輸出為undefined

解釋:函式沒有返回值所以輸出為undefined

3.**輸出為

function fn1()

return fn2;

}fn1()(); // 彈出1

var newfn=new fn1();

newfn(); // 彈出1

newfn(); // 彈出2

解釋:第一次屬於呼叫函式,++a先執行++操作在賦值給a,所以彈出1,而後新創造了乙個函式newfn第一次彈出和正常引用一樣,所以彈出1,2而第二次呼叫的時候,由於閉包的作用,裡面a沒被釋放,在1的基礎上又加上了1,所以彈出2

參考++a和++a的區別

4.**輸出為

var arr=[1,2];

var arr2=arr.concat();

arr2.push(arr.splice(1,0));

console.log(arr); // [1,2]

console.log(arr2); // [1,2,]

知識點1:contact方法不傳引數
var arr = [1, 2];

var arr2 = arr.concat();

console.log(arr); // 輸出為[1,2]

console.log(arr2); // 輸出為[1,2]

小結:不傳引數,會重新建立乙個一樣的陣列,不改變原陣列

知識點2:contact方法,傳乙個一緯陣列

var arr = [1, 2];

var arr2 = arr.concat([3,4]);

console.log(arr); // 輸出為[1,2]

console.log(arr2); // 輸出為[1,2,3,4]

小結:傳乙個一緯陣列,會重新建立新陣列,傳入陣列會被拉平,不改變原陣列

知識點2:contact方法,傳乙個二緯陣列

var arr = [1, 2];

var arr2 = arr.concat([3,4,[5,6]]);

console.log(arr); // 輸出為[1,2]

console.log(arr2); // 輸出為[1,2,3,4,[5,6]]

小結:傳二緯陣列,會重新建立新陣列,傳入陣列的最外層元素會被拉平,裡面的不變,不改變原陣列

知識點3:contact方法,傳乙個物件

var arr = [1, 2];

var arr2 = arr.concat();

console.log(arr); // 輸出為[1,2]

console.log(arr2); // 輸出為[1,2,]

小結:傳物件,會重新建立新陣列,傳入物件直接和陣列拼接成新陣列,不改變原陣列

知識點4:splice方法

var arr = [1, 2];

console.log(arr); // 輸出[1,2]

console.log(arr.splice()); // 輸出為

arr.splice();

console.log(arr); // 輸出[1,2]

小結:不傳引數表示不對陣列做任何操作,但是又返回值,返回被切割的空陣列

知識點5:splice方法,用於刪除陣列的元素

var arr = [1, 2];

console.log(arr); // 輸出[1,2]

console.log(arr.splice(1)); // 輸出為[2]

arr.splice(1);

console.log(arr); // 輸出[1]

小結:傳乙個引數表示從這個位置開始切割(包括這個 位置),返回被切割的陣列,原陣列改變

知識點5:splice方法,用於刪除陣列的元素

var arr = [1, 2];

console.log(arr); // 輸出[1,2]

console.log(arr.splice(1)); // 輸出為[2]

arr.splice(1);

console.log(arr); // 輸出[1]

小結:傳乙個引數表示從這個位置開始切割(包括這個 位置),返回被切割的陣列,原陣列改變

知識點6:splice方法,用於刪除陣列的元素

var arr = [1, 2,3];

console.log(arr.splice(1,1)); // 輸出[2]

console.log(arr); // 輸出[1,3]

小結:傳兩個引數表示從第乙個位置開始切割(包括這個 位置),第二個引數表示切割的個數,返回被切割的陣列,原陣列改變

知識點7:splice方法,用於替換陣列的元素

var arr = [1, 2,3];

console.log(arr.splice(1,1,4,5)); // 輸出[2]

console.log(arr); // 輸出[1,4,5,3]

小結:傳兩個引數表示從第乙個位置開始切割(包括這個 位置),第二個引數表示切割的個數,之後的引數表示在切割位置上放上開始新的元素,返回被切割的陣列,原陣列改變

知識點8:splice方法,用於增加陣列的元素

var arr = [1, 2,3];

console.log(arr.splice(1,0,4,5)); // 輸出

console.log(arr); // 輸出[1,4,5,2,3]

小結:傳兩個引數表示從第乙個位置開始切割(包括這個 位置),第二個引數表示切割的個數,之後引數表示在切割位置之後新增的元素,返回被切割的陣列,原陣列改變

參考菜鳥:

5.**輸出為

console.log((!+++!+).length); // 輸出8
console.log((!+++!+)); // 輸出為truetrue

console.log((!++)); // 輸出為true

console.log((!+)); // true

console.log((+)); // 0

解釋:+號除了加法運算,字串連線功能,還有正號的功能,會有兩步操作,第一步先嘗試轉string,第二步嘗試轉number,所以+會先轉成''=>0,然後再去反為真即true

6.下列**輸出

console.log((3<5,4>6)); // false

console.log((4>6,3<5)); // true

解釋:,號表示式,返回的是最後乙個表示式的值,第乙個最後的表示式是4>6,所以fasle,第二個逗號運算子最後乙個表示式是3<5,所以為true

公開課 redis秒殺和公開鎖 1

本節課我看了2遍,為什麼看兩遍呢?將思想層面的比較多.而不僅僅是技術.其實,技術是死的.技術點就那麼多.思想是活的,怎麼想問題,才是關鍵.現在不缺少會寫 的人,也就是執行層面的人.缺少的是回想的人,能解決辦法的人.只有突破了思想層面,才有可能上公升.以前,一門技術,拿來就學,學完就用,可是,很少思考...

谷歌深度學習公開課學習筆記 1

模型改進後,在你的驗證集上影響了30個例項的改變,通常是有統計學意義的,通常是可以信任的。想象你的驗證集裡有3000個例項,假定你信任30的規則,你可以相信哪個水平的準確性的提公升?當你得到從80 到81 這1 的提公升更有說服力,因為有30個例項從不正確到正確。這就是為什麼對大多數分類器任務,人們...

程式設計正規化 斯坦福公開課 學習筆記1

簡單的正數二進位制加法1 5 6 如果表示負數時,只是單獨的拿最高位做符號位 則short型的 7 7表示為 看上式,7 7結果卻得到了 14,而不是0 但是如果 7用反碼來表示,就不會有問題 最高位的1出界了,所以得到的就是0了。用補碼表示時,正數的補碼是自己,負數的補碼是絕對值取反加一。如果只用...