【錯題記錄】JavaScript專項練習(篇六)

Milk595發表於2020-12-15

1. 下列描述中,錯誤的是

a. 物件導向開發中,引用傳遞意味著傳遞的並不是實際的物件,而是物件的引用,因此,外部對引用物件所做的改變不會反映到所引用的物件上
b. 物件導向的三大特性包括:封裝,繼承,多型

解析:答案 a

引用物件引用的是實際的物件,對引用的修改就是對物件的修改


2. 從字串 const str = ‘qwbewrbbeqqbbbweebbbbqee’;中能得到結果 [“b”, “bb”, “bbb”, “bbbb”] 以下錯誤語句是

a. str.match(/b+/g)
b. str.match(/b*/g)
c. str.match(/b{1,4}/g)
d. str.match(/b{1,5}/g)

解析:答案 b
在這裡插入圖片描述
+表示出現至少一次b
*表示可以不出現b,也可以出現一次或多次
{n,m}表示最少出現n次b,最多出現m次b


3.要在10秒後呼叫checkState,下列哪個是正確的

a. window.setTimeout(checkState, 10)
b. window.setTimeout(checkState, 10000)
c. window.setTimeout(checkState(), 10)
d. window.setTimeout(checkState(), 10000)

解析:答案 b

window.setTimeout(checkState(), 10000); //立即被呼叫
window.setTimeout(checkState, 10000); // 10s後被呼叫
window.setTimeout(“checkState()”, 10000); //10s後被呼叫 注意和第一個的區別 有引號

checkState加了圓括弧相當於函式表示式,會立即執行,執行的結果作為返回值傳遞給settimeout


4. 如下結果是

var x = new Boolean(false);
if (x) {
  alert('hi');
}
var y = Boolean(0);
if (y) {
  alert('hello'); 
}

解析:答案 hi

此題考查的是 JS 的型別轉換:

  1. if(x) 這裡期望 x 是一個布林型別的原始值,而 x 是一個物件,任何物件轉為布林值,都為得到 true(切記!在 JS 中,只有0,-0,NaN,"",null,undefined 這六個值轉布林值時,結果為 false)
  2. 題目的第二部分,一定要注意 y = Boolean(0),而不是 y = new Boolean(0)。這兩個有很大區別,用 new呼叫建構函式會新建一個布林物件,此處沒有加 new,進行的是顯示型別轉換,正如上述第一條所說,0 轉換布林,結果為 false,所以此時y 的值就是 false。如果加了 new,那麼 y 就是一個 Boolean 型別的物件,執行 if(y) 時,物件轉布林,始終是true,所以結果會與不加 new 的時候相反

5.下拉選單中,使用者更改表單元素Select中的值時,就會呼叫( onChange)事件處理程式


6. 哪些表示式的結果為true

a. isNaN("100")
b. parseInt("1a") === 1
c. [] instanceof Array

解析 答案 b c


7. 如何遍歷下面的 my_data 物件?var my_data={a:’Ape’, b:’Banana’, c:’Citronella’}

a. for(var key in my_data) {}
b. foreach(my_data as key=>value) {}
c. for(var i=0;i<my_data.length;i++) {}

解析:答案 a

for…in 語句用於遍歷陣列或者物件的屬性(對陣列或者物件的屬性進行迴圈操作)
在這裡插入圖片描述


8. 以下ES6程式碼,下面哪項正確

function * gen() {
    yield 1;
    yield 2;
    yield 3;
}
a. gen()執行後返回一個Generator物件
b. gen()執行後返回1

解析:答案 a
在這裡插入圖片描述


9.

getElementsByName() 方法可返回帶有指定名稱的物件的集合

  1. 語法
    document.getElementsByName(name)
    該方法與 getElementById() 方法相似,但是它查詢元素的 name 屬性,而不是 id 屬性
  2. 另外,因為一個文件中的 name 屬性可能不唯一(如 HTML 表單中的單選按鈕通常具有相同的 name 屬性),所有getElementsByName() 方法返回的是元素的陣列,而不是一個元素

10. 下列不屬於document物件方法的是

a. onload
b. querySelectorAll
c. children
d. ajax

解析:答案 a c d

onload 為 document 物件的屬性,而不是方法


ParentNode.children 是一個只讀屬性,返回一個節點的子元素,是一個動態更新的 HTMLCollection 型別。不是 document 物件的方法


AJAX不是JavaScript的規範,它只是一個縮寫:Asynchronous JavaScript and XML,意思就是用JavaScript執行非同步網路請求。在現代瀏覽器中主要依靠 XmlHttpRequest 物件


11. 以下程式碼執行後,console 的輸出是

function Foo(){
console.log(this.location)
}
Foo()

解析:答案 當前視窗的 Location 物件

點選檢視?this指向
這裡 this指向 window物件中的location


12.

var filt=/^1[0-9]{10}+$/

^ 匹配輸入字串的開始位置。在這裡也就是要求1開始


[0-9]{10}+ [0-9]匹配0~9之間的數字,{10}重複10次。+匹配前面的子表示式一次或多次


$ 匹配輸入字串的結尾位置


13. 以下 javascript 程式碼,在瀏覽器中執行的結果是

在這裡插入圖片描述
解析:答案:string

短路或 如果第一項是true 則結果為true 如果第一項為false 結果 為第二項(第二項不做計算直接返回)


14. 獲取原生JS的父節點的是

解析:答案 element.parentNode
在這裡插入圖片描述
在這裡插入圖片描述


15.以下程式碼的輸出結果是

var f = function g() {
        return 23
}
typeof g()
a. "number"
b. Error

解析:答案 b

typeof f 結果是function
typeof f() 結果是number
typeof g 結果是undefined.
typeof g() 結果是ReferenceError,g is not defined

在這裡插入圖片描述
在這裡插入圖片描述


16. 該程式碼在瀏覽器中執行,輸出的日誌結果是什麼 (後續研究…)

var obj = {};
obj.log = console.log;
obj.log.call(console,this);

解析:答案 window

相關文章