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