JS筆試題


http://bp.pep.com.cn/jc/ywjyjks/ywjygjkcjc/index.html?scene=2&clicktime=1581301811&enterid=1581301811&from=groupmessage&isappinstalled=01  下列程序輸出什么結果:
a = 123;
b = '123';
alert(a == b);
考察點: js做等值判斷的時候會做隱式轉型;前端必知;
答案: true

2 以下代碼輸出什么結果:
alert(0.1 + 0.2 === 0.3)

考察點:無論js還是java又或是其他高級語言,浮點數計算是不准確的;

答案: false

3 下列程序輸入什么結果?
(function() {
var a = b = 5;
})();

console.log(b);

考察點:知道js的變量作用域;
答案: undefined

4 參考String.trim()方法,請給String添加一個rtrim方法,方法要完成的功能是去掉字符串右邊的空格。提醒:考慮原型;
考察點:知道怎么在原型上添加功能;能寫出String.prototype.rtrim = function(){} 可認為作對了1/3; 能大概寫出答案一的套路的,可給滿分,能寫出答案二的套路的,可加分;

答案1, 常規做法, 從字符串最后一位開始尋找非空格字符;找到下標之后做substring:

String.prototype.rtrim = function() {

var index = this.length - 1;

for(var i=this.length-1; i>=0; i--) {

index = i;

if(this.charAt(i)!=' ') {

break;

}

}

return this.substring(0, index + 1);

}

 

答案2, 直接用正則表達式匹配並替換后面的空格 /\s{1, }$/:

String.prototype.rtrim = function() {

return this.replace(/\s{1,}$/, '')

}

 


5 按如下注釋行要求完成代碼:

var Obj = function(msg){ this.msg = msg; this.shout = function(){ alert(this.msg); } this.waitAndShout = function(){ //隔五秒鍾后執行上面的shout方法
 
        
 
        
 } }
考察點:如調用setTimeout,則this指向了window;要么that = this; that.shout(); 要么使用箭頭函數;這道題太經典,幾乎所有將js的書籍差不多都有這樣的例子;

答案1,給this取別名,后續再引用:
var that = this;
setTimeout(function(){that.shout();}, 5000)

答案2,利用es6的箭頭函數:
setTimeout(()=>{this.shout();}, 5000);

6 請編寫一段JavaScript腳本生成下面這段DOM結構。要求:使用標准的DOM方法或屬性。

<div id=”example”> <p class=”slogan”>你好!</p> </div>
考察點: 原生dom的最基本操作不能忘記;大體上能寫出document.createElement(),createTextNode(), 能appendChild()就算對;實在不行的話,會寫一個innerHTML也算勉強過關;

 答案1 :
 var div = document.createElement('div');
            div.id = "example";
            var p = document.createElement('p');
            p.className = "slogan";
            p.innerHTML = '你好!';
            div.appendChild(p);
            document.body.appendChild(div);

答案2, 能想出這個投機取巧的辦法也行吧: 

document.body.innerHTML = '<div id=”example”><p class=”slogan”>你好!</p></div>';

7 請說明下面各種情況的執行結果:
function doSomething() {
alert(this);
}
1 )element.onclick = doSomething,點擊element元素后。
2 )element.onclick = function() {doSomething()}, 點擊element元素后。
3 )直接執行doSomething()。
考察點: 還是this的問題; 回答對2個算過關吧。
答案(非標准答案,能說出第一個this指向所綁定元素;第二個指向window,第三個指向window就是全對):
1)將彈出具體綁定的元素的名稱;
2)將彈出‘window’
3)將彈出‘window’

8 有如下頁面代碼;請問頁面加載完畢之后,點擊第一個LI元素,將會輸出結果?

<html>

<body>

<ul>

<li>item1</li>

<li>item2</li>

<li>item3</li>

<li>item4</li>

<li>item5</li>

</ul>

</body>

</html>

<script>

var lis = document.getElementsByTagName('li');

for(var i = 0; i < lis.length; i++) {

lis[i].onclick = function(){alert('you clicked item ' + i)}

}

</script>

考察點:閉包;這樣的場景在編程中很常見;

答案: you clicked item 5




9 如下代碼,當用戶點擊了‘Click here!’ 之后控制台會輸出什么結果?

    <div onclick="console.log('div')"> <p onclick="console.log('p')"> Click here! </p> </div>


考察點,js事件是會冒泡的,所以會看到兩條log;先p,后div;能說出有兩條log的就算對;
答案:
p
div

10 寫一個正則表達式,用來驗證手機號;

考察點:正則表達式在web前端幾乎必備;起碼要能寫出\d{11}, 再進步一點要能寫出^\d{11}$;再完美一點的要能寫出

/^1\d{10}$/
答案:^1\d{10}$


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM