一、
以下表達(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