網(wǎng)易微專業(yè)之《前端工程師》學(xué)習(xí)筆記(12)-JS單元測(cè)試題

一、
以下表達(dá)式返回結(jié)果是:parseInt("10.1",16)

  • A.8
  • B.16
  • C.10
  • D.NaN

解:parseInt() 函數(shù)可解析一個(gè)字符串,并返回一個(gè)整數(shù)。parseInt()的語法是:

parseInt(string, radix)

參數(shù)string表示要解析的字符串,radix表示要轉(zhuǎn)換成什么進(jìn)制的。題目中的意思是10.1取整,然后轉(zhuǎn)換成16進(jìn)制的,所以取整就是10,10的16進(jìn)制就是16。選B。

二、單選(2分)
以下代碼執(zhí)行后a,b的值分別是
var a = 0;
var b = true||a++;

  • A.1,0

  • B.0,1

  • C.0,true

  • D.1,true

解:選C。 這題考的是||邏輯或的用法。邏輯或的用法是:a || b : 將a, b轉(zhuǎn)換為Boolean類型, 再執(zhí)行邏輯或, true返回a, false返回b。轉(zhuǎn)換規(guī)則:對(duì)象為true非零數(shù)字為true,非空字符串為true,其他為false。邏輯或執(zhí)行的是短路操作,b=true是true,那么a++就不會(huì)去執(zhí)行,所以a=0。

三、單選(2分)
以下表達(dá)式返回結(jié)果分別是1&&0

  • A.true
  • B.false
  • C.0
  • D.1
    解:這題選C。這題的考點(diǎn)是&&邏輯與。邏輯與的用法是a && b : 將a, b轉(zhuǎn)換為Boolean類型, 再執(zhí)行邏輯與, true返回b, false返回a。轉(zhuǎn)換規(guī)則:對(duì)象為true非零數(shù)字為true,非空字符串為true,其他為false。

四、單選(2分)
以下表達(dá)式返回結(jié)果是!0?1:2

  • A.0
  • B.false
  • C.1
  • D.true

解:這題選C。這題考的是三元運(yùn)算符。三元運(yùn)算符的語法是:

條件 ? 結(jié)果1 : 結(jié)果2;

這里你把條件寫在問號(hào)(?)的前面后面跟著用冒號(hào)(:)分隔的結(jié)果1和結(jié)果2。滿足條件時(shí)結(jié)果1否則結(jié)果2。!0是true是,所以返回1。

五、單選(2分)
以下代碼執(zhí)行后,arr和result的值分別是

var arr = [1,2,3]; 
var result = arr.shift(); 
  • A.[1,2,3] 和 1

  • B.[2,3] 和 1

  • C.[1,2,3] 和 3

  • D.[2,3] 和 3

解:選B。這題考的是shift() 。shift()方法用于把數(shù)組的第一個(gè)元素從其中刪除,并返回第一個(gè)元素的值。所以result是返回的這個(gè)1。另外如果數(shù)組是空的,那么 shift() 方法將不進(jìn)行任何操作,返回 undefined 值。注意,該方法不創(chuàng)建新數(shù)組,而是直接修改原有的 arrayObject。所以arr的值就是被改了的[2,3]。

六、單選(2分)
以下代碼執(zhí)行后的結(jié)果為typeof (1>0)

  • A."boolean"

  • B."undefined"

  • C."object"

  • D."string"

解:選A。這題考的是typeof。typeof是一元運(yùn)算,放在一個(gè)運(yùn)算數(shù)前,運(yùn)算數(shù)可以是任意類型,它返回值是一個(gè)字符串,該字符串說明運(yùn)算數(shù)的類型。1>0是boolean類型。

七、單選(2分)
以下代碼執(zhí)行后,total的值為

var total = 0;
for(var i = 0; i < 5; i++){
  if(i == 3){continue;}
  total += i;
}
  • A.6

  • B.11

  • C.7

  • D.3

解:選C。 這題考的是continue。continue的意思是結(jié)束本次循環(huán),繼續(xù)下一次循環(huán),所以當(dāng)i=3的時(shí)候不算,1+2+4=7,總和就是7。

八、單選(2分)
以下代碼執(zhí)行后,total的值為

var total = 0,
    i = 5;
do{
  total += i++;
}while(i < 7)
  • A.5

  • B.11

  • C.18

  • D.6
    解:選B。不解釋了,do...while是先操作再循環(huán)。

九、單選(2分)
以下代碼執(zhí)行后a的值為:

function increment(x){
 x + 1;

}
var a = increment(3);
  • A.undefined

  • B.2

  • C.3

  • D.4

解:選A。increment函數(shù)中缺少了return x+1,所以沒返回值,函數(shù)要是沒有返回值的話,就相當(dāng)于就計(jì)算了一次,但是沒有值,只有用return才會(huì)有返回值。

十、單選(2分)
以下代碼執(zhí)行后circle的值為:

var circle = {x: 1, y: 0, r: 5};
function move(shape, stepX, stepY){
 shape.x = shape.x + stepX;
 shape.y = shape.y + stepY;
 return shape
}
move(circle, -2, 3);
  • A.{x: 1, y: 0, r: 5}

  • B.{x: 1, y: 3, r: 5}

  • C.{x: -1, y: 3, r: 5}

  • D.{x: 4, y: -2, r: 5}

解:選C。這題主要是返回shape的值,shape就是circle的值。circle的x=1+(-2)=-1,y=0+3=3,r不變,所以答案是C。

十一、多選(4分)
以下表達(dá)式中返回當(dāng)前時(shí)間的有:

  • A.new Date(Number.POSITIVE_INFINITY)

  • B.new Date()

  • C.new Date(Date.now())

  • D.Date.getNow()

解:BC。B不用解釋了,C為什么呢,參數(shù)Date.now()是返回從1970.01.01 00:00:00到現(xiàn)在的毫秒數(shù),所以是可以的。

Date()函數(shù)的參數(shù)可以設(shè)置毫秒數(shù),或者具體的指定的日期。它的語法是:

new Date(year,month[,day[,hour[,minutes[,seconds[,milliseconds]]]]])

注意:月份是從0開始計(jì)算的,比如你要輸1月份,就要輸0,2月份就要輸1。另外,參數(shù)默認(rèn)的必須填年和月,其他的諸如日小時(shí)分鐘可以選擇不填。如果只填年或者月,就會(huì)返回1977年1.01的最初時(shí)間。

十二、填空(2分)
parseInt("1.6a")的值為___________

解:答案是1。parseInt() 函數(shù)可解析一個(gè)字符串,并返回一個(gè)整數(shù)。它的語法看第一題,只有字符串中的第一個(gè)數(shù)字會(huì)被返回。如果字符串的第一個(gè)字符不能被轉(zhuǎn)換為數(shù)字,那么會(huì)返回 NaN。

十三、填空(2分)
/\d?/.test('jerry') 的值為___________

解:這題考的正則,\d代表數(shù)字,?代表可以出現(xiàn)0-1次,所以jerry是非數(shù)字,代表\d可以出現(xiàn)0次,所以是true。答案是true。

順便來介紹下test()函數(shù)吧。

regexObj.test(str)

這個(gè)函數(shù)是測(cè)試正則表達(dá)式與指定字符串是否匹配。regexObj表示正則表達(dá)式,參數(shù)str表示要進(jìn)行匹配的指定字符串,那么來看看栗子吧:

/13566668888/.test("1356666888");//false
/13566668888/.test("13566668888");//true
/13566668888/.test("x1356666888y"); //true

十四、填空(2分)
以下代碼執(zhí)行后:
var ms = "share.jpeg".match(/(?:[.]+).(png|gif|jpg|jpeg)/);
ms[1]的值為"______"

解:答案是jpeg。來看看這個(gè)正則表達(dá)式

/^(?:[^.]+)\.(png|gif|jpg|jpeg)/

()表示捕獲的符號(hào),ms[1]表示捕獲第二個(gè)(),所以捕獲到的就是jpeg了。match的語法就是下面這樣,栗子就是題目的這個(gè)栗子。

str.match(regexp);

十五、填空(2分)
以下代碼執(zhí)行后:

var width = 2;
var rectangle = {
 length: 5,
 width: 10,
 perimeter: function(){
 return (this.length + this.width) * 2;
 }
}
var a = rectangle.perimeter();

a的值為________

解:答案是30。這是考作用域。我測(cè)試了下當(dāng)把函數(shù)里面的width去掉,return里的this.width改成width,就可以使用全局的width了,要使用全局的width就必須把this去掉。

var width = 2;
var rectangle = {
 length: 5,
 perimeter: function(){
 return (this.length + width) * 2;
 }
}
var a = rectangle.perimeter();
console.log(a) //14
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容