請不要作弊?
這些問題中的概念是我在生產程式碼中遇到的概念。本測驗的目標是測試相關且必要的 JavaScript 知識。
控制台會記錄什麼?
const user = { name: "Alice", isBanned: false, pricing: 'premium', isSubscribedTo: function(channel) { return channel === "JavaScript"; }, getName: function() { return this.name; }, getStatus: function() { const status = () => { return `Name: ${this.getName()}, Banned: ${this.isBanned}`; }; return status(); } }; const channel = "JavaScript"; const getName = user.getName; const getStatus = user.getStatus; console.log(user.getStatus()); console.log(getName()); console.log(getStatus());
答案:
控制台會記錄什麼?
function createCounter() { let count = 0; return function() { count++; console.log(count); } } const counter1 = createCounter(); const counter2 = createCounter(); counter1(); counter1(); counter2();
答案:
控制台會記錄什麼?
console.log('Start'); setTimeout(() => console.log('Timeout 1'), 0); Promise.resolve().then(() => console.log('Promise 1')); setTimeout(() => console.log('Timeout 2'), 0); Promise.resolve().then(() => console.log('Promise 2')); console.log('End')
答案:
控制台會記錄什麼?
function Animal(name) { this.name = name; } Dog.prototype.speak = function() { console.log(`${this.name} makes a sound.`); } function Dog(name) { Animal.call(this, name); } Dog.prototype.constructor = Dog; const dog = new Dog('Rex'); dog.speak(); console.log(dog instanceof Dog); console.log(dog instanceof Animal);
每次通話都會記錄什麼?
function displayUserInfo({ name = "Guest", role = "User" } = {}) { console.log(`Name: ${name}, Role: ${role}`); } displayUserInfo(); displayUserInfo({}); displayUserInfo({ name: "Alice" }); displayUserInfo(null);
控制台會記錄什麼?
const funcs = []; for (var i = 0; i < 3; i++) { funcs.push(function() { console.log(i); }); } for (let j = 0; j < 3; j++) { funcs.push(function() { console.log(j); }); } funcs.forEach(func => func());
document.body.innerHTML = ` <div id="outer"> Outer <div id="middle"> Middle <button id="inner">Inner</button> </div> </div> `; const outer = document.getElementById('outer'); const middle = document.getElementById('middle'); const inner = document.getElementById('inner'); outer.addEventListener('click', () => console.log('Outer Bubble'), false); outer.addEventListener('click', () => console.log('Outer Capture'), true); middle.addEventListener('click', (e) => { console.log('Middle Bubble'); }, false); middle.addEventListener('click', () => console.log('Middle Capture'), true); inner.addEventListener('click', () => console.log('Inner Bubble'), false); inner.addEventListener('click', (e) => { console.log('Inner Capture'); }, true); inner.click();
您可以透過將程式碼貼到開發工具的控制台來自行驗證。
正確答案是B。
解釋:user.getStatus() 呼叫記錄“Name: Alice, Banned: false”,因為箭頭函數狀態在其封閉範圍內正確存取了它。但是, getName() 會記錄 undefined,因為它在指派給獨立變數時會遺失 this 上下文,導致 getStatus() 也會記錄 name 和 isBanned 的 undefined。
正確答案是B。
說明:counter1 和 counter2 都有自己獨立的計數變量,因為每次呼叫 createCounter() 都會建立一個新的閉包。因此,counter1 在其前兩次呼叫中記錄 1 和 2,而 counter2 在其第一次呼叫中記錄 1。
正確答案是B。
說明:同步console.log先呼叫log「Start」與「End」。在事件循環中,Promise 的優先順序高於 setTimeout,因此接下來會記錄“Promise 1”和“Promise 2”,然後是“Timeout 1”和“Timeout 2”。
正確答案是A。
說明:所以這個有點棘手。 talk 方法在 Dog.prototype 上正確定義,dog 是 Dog 的實例。
在 Dog 建構子內,這一行使用目前的 this 上下文和 name 參數來呼叫 Animal 建構子。這有效地設定了新建立的 Dog 實例的 name 屬性。
現在假設程式碼如下:
// Code before... Dog.prototype = Object.create(Animal.prototype); Dog.prototype.constructor = Dog; // Code after...
那麼正確答案是B)。
附註:如果您想自己驗證,您需要將其貼到瀏覽器中(而不是錯誤地得到答案的 LLM)。
正確的輸出是:
答案:3,3,3,0,1,2
解釋:第一個循環使用 var,它具有函數作用域,因此數組前半部分中的所有函數都以相同的 i 結束,循環結束時 i 為 3。第二個循環使用let,它具有區塊作用域,因此後半部中的每個函數都會在不同的j 值(0, 1, 2) 上關閉,從而產生輸出:3, 3, 3, 0, 1, 2.
正確答案是D。
說明:
此範例示範了事件的完整生命週期。您可以透過呼叫 stopImmediatePropagation 或 stopPropagation 函數來停止傳播。
以上是如果你能正確回答這些問題,那麼你的 JavaScript 等級還不錯的詳細內容。更多資訊請關注PHP中文網其他相關文章!