概述
以下题目来自Duing公众号,本文所有题目已获得原作者授权
1、以下代码输出的结果是:
var foo=function bar(){}
console.log(typeof bar);
2、以下代码输出结果是:
var a=1;
if(true){
console.log(a);
let a=2;
}
3、以下代码输出的结果是:
var a=[1,2,3,3,5,6,6,6,'A',undefined,true,null]
var s=new Set(a);
console.log(s.size);
4、请你写出代码,计算两个数组的交集:
let arr1=[1,2,3,4,5];
let arr2=[4,5,6,7,8];
5、以下代码运行后,在控制台里打印输出的内容为:
let x=1;
function f1(x,y=x){
console.log(y);
}
function f2(y=x){
let x=0;
console.log(y);
}
f2(2);
f1();
6、以下代码运行后,在控制台里打印输出的内容为:
fn(123)
var a=456;
function fn(a){
console.log(a);
}
7、eadonly和disabled哪个属性对input和textarea元素都生效?
- A readonly
- B disabled
8、以下代码输出结果为:_________,并详细说明原因:
function F(){
this.a=1;
}
var obj=new F();
console.log(obj.prototype);
9、以下代码输出的结果为:
if(false){
var a=1;
let b=2;
}
console.log(a);
console.log(b);
10、请写出代码,计算两个数组的差集:
let arr1=[1,2,3,4,5];
let arr2=[4,5,6,7,8]
11、a、b、c、的值分别为:
var [a=3,b=a,c=3]=[1,2,undefined];
12、以下代码运行后,ul里的内容顺序为:
<ul id="list">
<li>百度</li>
<li>阿里</li>
<li>腾讯</li>
</ul>
<script>
var list=document.getElementById('list');
var lis=list.querySelectorAll('li');
list.replaceChild(lis[2],lis[1]);
list.insertBefore(lis[1],list.children[2]);
</script>
13、以下代码执行后,控制台里打印的内容为:
var c=1;
function c(){
console.log(c);
var c=3;
}
console.log(c);
c(2);
14、以下代码执行后,控制台里打印的内容为:
var name='kaivan';
(function () {
if(typeof name==='undefined'){
var name='chen';
console.log(name);
}else {
console.log(name);
}
})();
15、以下代码执行后,控制台里打印的内容为:
var a=10;
function test() {
a=100;
console.log(a);
console.log(this.a);
var a;
console.log(a);
}
test();
16、以下代码执行后,控制台里打印出的内容为:
if(!('a' in window)){
var a=1;
}
console.log(a);
17、以下代码执行后,控制台里打印的内容为:
var val=1;
var obj={
val:2,
del:function () {
console.log(this);
this.val*=2;
console.log(val);
}
}
obj.del();
18、以下代码执行后,控制台里打印出的内容为:
var name='kaivon';
var object={
name:'chen',
getNameFunc:function () {
return function () {
return this.name;
}
}
}
console.log(object.getNameFunc()())
19、以下代码执行后,控制台里打印的内容为:
var name='kaivon';
var object={
name:'chen',
getNameFunc:function () {
var that=this;
return function () {
return that.name;
}
}
}
console.log(object.getNameFunc()())
20、以下代码执行后,控制台里打印的内容为:
var a=6;
setTimeout(function () {
a=666;
},0)
console.log(a);
21、以下的代码执行后,控制台里打印的内容为:
(function () {
var a=b=3;
})();
console.log(typeof a==='undefined');
console.log(typeof b==='undefined')
22、以下的代码执行后,控制台里打印的内容为:
var a=(function (foo) {
return typeof foo.bar;
})({foo:{bar:1}});
console.log(a);
23、以下的代码执行后,控制台里打印的内容为:
function f() {
return f;
}
console.log(new f() instanceof f);
24、以下的代码执行后,控制台里打印的内容为:
function A() {}
A.prototype.n=1;
var b=new A();
A.prototype={
n:2,
m:3,
}
var c=new A();
console.log(b.n,b.m);
console.log(c.n,c.m)
25、以下的代码执行后,控制台里打印的内容为:
console.log(false.toString());
console.log([1,2,3].toString());
console.log(1.toString());
console.log(5..toString());
26、以下的代码执行后,控制台里打印的内容为:
console.log(1 + '2' + '2');
console.log(1 + +'2'+ '2');
console.log(+ '1' - +'1'+'2');
console.log('A' - 'B' + '2');
console.log('A' - 'B' + 2)
27、以下的代码执行后,控制台里打印的内容为:
var a=666;
console.log(++a);
console.log(a++);
console.log(a);
28、以下的代码执行后,控制台里打印的内容为:
var a={n:1};
var b=a;
a.x=a={n:2};
console.log(a.n,b.n);
console.log(a.x,b.x);
29、以下的代码执行后,控制台里打印的内容为:
console.log(c);
function c(a) {
console.log(a);
var a=3;
function a() {
}
}
c(2);
30、以下的代码执行后,控制台里打印的内容为:
console.log(typeof a);
function a() {};
var a;
console.log(typeof a);
31、以下的代码执行后,控制台里打印的内容为:
var a;
var b='undefined';
console.log(typeof a);
console.log(typeof b);
console.log(typeof c);
32、以下的代码执行后,控制台里打印的内容为:
var obj={n:1};
function fn2(a) {
a.n=2;
}
fn2(obj);
console.log(obj.n);
33、以下的代码执行后,控制台里打印的内容为:
var x=10;
function fn() {
console.log(x);
}
function show(f) {
var x=20;
fn();
}
show(fn);
34、以下的代码执行后,控制台里打印的内容为:
Object.prototype.bar=1;
var foo={
goo:undefined
};
console.log(foo.bar);
console.log('bar' in foo);
console.log(foo.hasOwnProperty('bar'));
console.log(foo.hasOwnProperty('goo'));
35、以下的代码执行后,控制台里打印的内容为:
Object.prototype.bar=1;
var foo={
moo:2,
}
for(var i in foo){
console.log(i);
}
36、以下的代码执行后,控制台里打印的内容为:
function foo1() {
return{
bar:'hello'
};
}
function foo2() {
return{
bar:'hello'
};
}
console.log(foo1());
console.log(foo2());
37、以下的代码执行后,控制台里打印的内容为:
console.log(function () {
return typeof arguments;
}())
38、以下的代码执行后,控制台里打印的内容为:
console.log(Boolean(false));
console.log(Boolean('0'));
console.log(Boolean(''));
console.log(Boolean(NaN));
39、以下的代码执行后,控制台里打印的内容为:
var x=1;
if(function f (){}){
x+typeof f;
}
console.log(x);
40、以下的代码执行后,控制台里打印的内容为:
console.log('b'+'a'+ + +'a'+'a')
41、以下的代码执行后,控制台里打印的内容为:
var obj={
a:1,
b:2
}
Object.setPrototypeOf(obj,{c:3});
Object.defineProperty(obj,'d',{value:4,enumerable:false});
for(let prop in obj){
console.log(prop);
}
42、以下的代码执行后,控制台里打印的内容为:
var x=10;
var foo={
x:90,
getX:function () {
return this.x;
}
};
console.log(foo.getX());
var xGetter=foo.getX;
console.log(xGetter());
43、写一个sum方法,当使用下面的语法调用时它将正常工作:
console.log(sum(2,3));
console.log(sum(2)(3))
44、当用户点击“按钮4”时什么被记录到控制台?为什么?
for(var i=0;i<5;i++){
var btn=document.createElement('button');
btn.appendChild(document.createTextNode('按钮'+i));
btn.addEventListener('click',function () {
console.log(i);
})
document.body.appendChild(btn);
}
45、以下代码执行后,d里的内容为?
var d={};
var b=['car','house'];
b.forEach(function (k) {
d[k]=undefined;
})
console.log(d);
46、以下代码执行后,控制台里的内容为?
var arr1='john'.split('');
var arr2=arr1.reverse();
var arr3='jones'.split('');
arr2.push(arr3);
console.log('arr1:length='+arr1.length+'last='+arr1.splice(-1));
console.log('arr2:length='+arr2.length+'last='+arr2.splice(-1));
47、以下代码执行后,控制台里的内容为?
console.log("0 || 1="+(0||1));
console.log('1 || 2='+(1||2));
console.log('0&&1='+(0&&1));
console.log('1&&2'+(1&&2));
48、以下代码执行后,控制台里的内容为?
var a={}
b={key:'b'};
c={key: 'c'};
a[b]=123;
a[c]=456;
console.log(a[b]);
console.log(a[c]);
49、以下代码执行后,控制台里的内容为?
(function (x) {
return (function (y) {
console.log(x);
})(2)
})(1);
50、以下代码执行后,控制台里的内容为?
var length=10;
function fn() {
console.log(this.length);
}
var obj={
length:5,
method:function (fn) {
fn();
arguments[0]();
}
};
obj.method(fn,1);
51、以下代码执行后,控制台里的内容为?
var myObject={
foo:'bar',
func:function () {
var self=this;
console.log('outer func: this.foo='+this.foo);
console.log('outer func: self.foo='+self.foo);
(function () {
console.log('inner func :this.foo='+this.foo);
console.log('inner func :self.foo='+self.foo)
})()
}
}
myObject.func();
52、有关this运算符说法不正确的是?
- A this表示当前对象的一个引用
- B 在JS中,由于JS的动态性,this的指向在运行时才正确
- C this关键字在JavaScript中和执行环境,而非声明环境有关
- D 通过早期绑定可以实现对this的高度复用
53、以下哪个不是JavaScript中的错误类型?
- A 、语法错误
- B、系统错误
- C 、类型错误
- D 、引用错误
54、有关循环语句说法正确的是?
- A、for...in循环遍历不到继承的属性
- B、do...while在判断条件前会执行一次代码块
- C、for循环中三个表达可以省略,分号也可以省略
- D、while循环语句至少会执行循环体一次
55、如果函数无明确的返回值,或调用了没有参数的return语句,那么它真正返回的值是?
- A、null
- B、-1
- C、0
- D、undefined
56、JavaScript函数中包含了一个参数对象下面有关arguments的描述错误的是?
- A、arguments是个比较特殊的对象,使用者无需明确指出参数名即可访问到它们
- B、可以使用arguments的属性length来检测传递给函数的参数个数
- C、借助于arguments对象,我们可以模拟函数重载
- D、arguments是一个标准数组
57、有关使用typeof运算符的不正确结论是?
- A、typeof运算符后面的参数可以使用括号引起来,也可以不带括号
- B、typeof运算符的括号里可以放多个参数
- C、使用typeof运算符检测的返回结果值总是一个小写字符串形式
- D、typeof 和instanceof可以相互代替
58、使用instanceof运算符时正确的结论是?
- A、一个空对象不能使用instanceof来检测
- B、instanceof运算符会顺着原型链向上查找
- C、instanceof的左操作数只能是对象类型的数据
- D、instanceof可以用来检测数据类型
59、给定x=6以及y=3,下列结果正确的是?
- A、x<10&&y>1 的结果为true
- B、x5|| y5 的结果为true
- C、!(x==y)的结果为false
- D、!!x==x的结果为true
60、如下不正确的结论是:
- A、关系运算符的优先级比’&&‘和’||'的要高
- B、假值是false、null、undefined、0、-0、NaN和’’;所有其它的值(包括所有对象)都是真值
- C、‘&&’运算符的结果并不一定是布尔值
- D、关系表达式的运算结果未必总是true或false
61、已知“var obj={a:“Hello”};”于是“obj && obj.a;”的结果是?
- A、true
- B、null
- C、‘Hello’
- D、false
62、下面关于逻辑运算符的描述错误的是?
- A、!总是返回true或者false
- B、!!10与10是一样的
- C、||运算符会先计算左边的表达式,如果结果为false,那么再计算右侧的表达式,并返回右侧表达式的计算结果
- D、语句’if(ab) stop()'与语句‘(ab)&&stop();’表达含义一致
63、有关for循环语句说法错误的是?
- A、for循环中三个表达式中的任何一个都可以忽略,但是两个分号是必不可少的
- B、for循环语句的初始化部分仅在循环开始之前执行一次
- C、for循环变量必须是数字类型
- D、for循环语句中的三部分(初始化部分、测试部分和更新部分)都是可选的
64、有关if语句说法不正确的是?
- A、if后面的条件必须使用括号包围
- B、有的if语句可以没有else部分
- C、if语句也支持嵌套
- D、else中语句的执行总是会匹配最外层的那个if语句中的条件判断
65、有关switch语句的结论错误的是?
- A、两个case不可共同使用一个break语句
- B、对每个case的匹配操作实际上是’==='恒等运算符比较,因此,表达式和case的匹配并不会做任何数据类型转换
- C、ECMAScript标准的确允许每个case关键字更随任意的表达式
- D、如果在函数中使用switch语句,有时可以使用return来代替break
66、有关JS函数不正确的结论有?
- A、定义函数时声明了多个参数,但调用时可以不使用它们
- B、函数体是由JavaScript语句组成的,必须使用花括号括起来,即使函数体不包含任何语句
- C、子函数可以在父函数外而正常访问
- D、定义函数时,并不执行函数体内的语句,调用的时候才会执行
67、有关var语句的错误结论的是?
- A、var 声明的变量有时可以通过delete删除
- B、如果在顶层代码中使用var语句,它声明的是全局变量
- C、如果var语句出现在函数体内,那么它定义的是一个全局变量
- D、var 和function都是声明语句,用于声明或者定义变量或者函数
68、有关JS变量说法错误的是?
- A、if语句里声明的变量会被预解析
- B、使用var 多次声明同一个变量没有问题
- C、JS变量一旦定义就无法重新定义
- D、const声明的变量是不能修改的
69、有关in运算符错误的结论是?
- A、for…in运算符不可用于数组元素的遍历
- B、in运算符用来判断对象是否存在指定名称的属性
- C、如果in运算符右侧的对象拥有一个名为左操作数的属性名,那么表达式返回true,否则,返回false
- D、in运算符也可以用在数组身上
70、关于JS赋值操作符描述错误的是?
- A、赋值操作符的顺序是从左至右
- B、"i=j=k=“Hello kaivon!”;“的含义是把三个变量都初始化为"Hello kaivon!”
- C、赋值表达式的顺序是从右往左
- D、赋值表达式的值就是右操作数的值
71、以下正确的选项是?
- A、“one”<3结果为true
- B、“111”<3结果为true
- C、“100”+200的结果是300
- D、加号运算符的一侧为字符串的话,会把两个数据都转成字符串
72、下列说法正确的是?(多选)
- A、直接调用Math.max时它并不接受数组
- B、对于一些系统内置对象,使用toString调用不会得到你想要的源码
- C、函数的length属性返回函数中的形参个数
- D、arguments对象用于描述传递给一个函数的参数数组,是一个类数组本身
73、下面正确的是?(多选)
- A、‘111’<'33’的比较结果为true
- B、1>=Infinity的结果为true
- C、‘100’+200表达式中200会被转成数字,结果为300
- D、‘100’+‘200’的表达式结果为‘100200’
74、关于JS函数的说法错误的是?
- A、函数可以通过定时器去调用
- B、自执行的函数可以形成一个独立作用域
- C、delete可以删除全局函数
- D、如果函数无明确的返回值,或调用了没有参数的return语句,那么它真正返回的值是undefined
75、有关this运算符正确的是(多选)?
- A、this对象不能用于箭头函数中
- B、apply和call能够强制改变函数执行时的当前对象,让this指向其它对象
- C、由于JS的动态性,this的指向在运行时才确定
- D、this运算符总是指向当前的对象
76、有关跳转语句的说法正确的是?
- A、switch中,case语句如果没有break,它会继续执行下一个case语句
- B、break是跳出当前次循环,containue是跳出整个循环
- C、break语句可以阻止函数继续运行
- D、在for…in中不能使用break
77、下面有关循环语句正确的结论是?(多选)
- A、for…in循环可以像枚举对象属性一样枚举数组索引
- B、for…in语句是for循环语句完全相同,它循环的范围是一个对象的所有属性或是一个数组的所有元素
- C、for循环的循环变量未必都是数字
- D、for循环语句中的所有三部分(初始化语句,条件语句和变化语句)都是可选的
78、下面有关条件及分支语句正确的结论是?(多选)
- A、case关键字后也可以使用表达式
- B、if语句的括号里表达式结果为被转成布尔值
- C、else语句可以独立使用
- D、if后面的条件可以不使用括号
79、下面说法错误的是?
- A、CommonJS模块规范可以和AMD规范都是针对服务端制定的规范
- B、字符串属于原始数据类型
- C、任意JS值都可以转换为布尔值
- D、null和undefined没有包装对象,如果访问它们的属性,会引发一个类型错误
80、下面说法错误的是?
- A、在ECMAScript中,‘+’既是二元加法运算符,又是一元数字运算符,还能够把两个字符串连接起来
- B、JavaScript运算符通常会根据需要对操作数进行类型转换
- C、在JS中,for/in循环只能遍历对象的所有属性
- D、字符串可以当作只读数组,使用方括号+下标的形式来访问单个字符
81、关于append与appendChild的区别,下面说法错误的是?
- A、append方法可以添加文本节点,比如append(‘杨戬’),appendChild方法不行
- B、append方法是jqery的,appendChild方法是原生的
- C、append方法可以同时插入一个节点以及一个文本,appendChild()只能添加一个
- D、append方法没有返回值,appendChild会返回添加的那个节点
82、以下代码运行后,在控制台里输出的内容为?
function output(a) {
console.log(a);
}
output(typeof function () {
output('Hello World!')
}())
83、以下代码运行后,在控制台里输出的内容为?
function test() {
var n=1573;
function add() {
n++;
console.log(n);
}
return {n:n,add:add}
}
var result=test();
var result2=test();
result.add();
result.add();
console.log(result.n);
result2.add();
84、以下代码运行后,在控制台里输出的内容为?
var b=1;
function outer() {
var b=2;
function inner() {
b++;
var b=3;
console.log(b);
}
inner();
}
outer();
85、关于new操作符的描述错误的是?
- A、new第一步是创建一个空对象,并且把this指向该对象
- B、new会返回创建的这个对象
- C、new不能够调用函数
- D、new 可以用来生成一个实例
86、关于post与get的区别描述错误的是?
- A、GET会将数据拼接到url地址中,POST会把数据放到请求头里
- B、GET传递的数量要比POST的小
- C、GET可以跨域,POST不能跨域
- D、GET历史参数保留在浏览器历史中,POST参数不会保存在浏览器历史中
87、有关各逻辑运算符错误的结论有?
- A、JS逻辑与运算符‘&&’会在左右两边的表达式结果都为真的时候才返回右边表达式的值
- B、JS逻辑与运算符’&&'不可能出现不会计算右操作数的情形
- C、JS逻辑或运算符‘||’可能出现不会计算右操作数的情形
- D、JS逻辑与运算符‘&&’可能出现不会计算右操作数的情形
88、在下列选项中选出程序的打印输出结果:
var settings={
username:'alan',
level:19,
health:90
}
var data=JSON.stringify(settings,['level','health']);
console.log(data);
- A、"{“level”:19,“health”:90}"
- B、"{“username”:“alan”}"
- C、"[“level”,“health”]"
- D、"{“username”:“alan”,“level”:19,“health”:90}"
89、下列打印的输出结果是?
function Dog(name) {
this.name=name
}
Dog.prototype.bark=function () {
console.log(`Woof I am ${this.name}`)
}
const pet=new Dog('Mara');
pet.bark();
delete Dog.prototype.bark;
pet.bark();
- A、‘Woof I am Mara’ ,TypeError
- B、‘Woof I am Mara’,‘Woof I am Mara’
- C、‘Woof I am Mara’,undefined
- D、TypeError,TypeError
90、选出程序执行的打印结果:
function greeting() {
throw "Hello world!";
}
function sayHi() {
try {
const data=greeting();
console.log('It worked!',data)
}catch (e) {
console.log("Oh no error:",e);
}
}
sayHi();
- A、“It worked! Hello world!”
- B、“Oh no an error: undefined”
- C、SyntaxError:can only throw Error objects
- D、“Oh no an error:Hello world!”
91、选择程序的输出结果:
function getInfo(member,year) {
member.name='Lydia';
year='1998'
}
const person={
name:'Alan'
}
const birthYear='1997';
getInfo(person,birthYear);
console.log(person,birthYear)
- A、{name:‘Lydia’},‘1997’
- B、{name:‘Sarah’},‘1998’
- C、{name:‘Lydia’},‘1998’
- D、{name:‘Sarah’},‘1997’
92、从下列选项中选出输出结果:
const newArr=[1,2,3].map(n=>{
if(typeof n==='number') return;
return n*2;
})
- A、[]
- B、[null,null,null]
- C、[undefined,undefined,undefined]
- D、[3 x empty]
93、说出下面的打印值:
const firstPromise=new Promise((res,rej)=>{
setTimeout(res,500,'one')
});
const secondPromise=new Promise((res,rej)=>{
setTimeout(res,100,'two')
});
Promise.race([firstPromise,secondPromise]).then(res=>{
console.log(res)
})
- A、one
- B、two
- C、two,one
- D、one,two
94、说出下面的输出结果:
function sayHi(){
console.log(name);
console.log(age);
var name='Lydia';
let age=21;
}
- A、Lydia 和undefined
- B、Lydia 和ReferenceError
- C、ReferenceError和21
- D、undefinede和undefined
95、选择代码执行后的打印结果:
for(var i=0;i<3;i++){
setTimeout(()=>{
console.log(i);
},1)
}
for(let i=0;i<3;i++){
setTimeout(()=>{
console.log(i);
},1)
}
- A、0,1,2和0,1,2
- B、0,1,2和3,3,3
- C、3,3,3和0,1,2
96、说出函数执行后的调用结果:
const shape={
radius:10,
diameter(){
return this.radius*2
},
perimeter:()=>2*Math.PI*this.radius
}
console.log(shape.diameter());
console.log(shape.perimeter());
- A、20and 62.83185307179586
- B、20和NaN
- C、20和63
- D、NaN和63
97、下列选项中哪一个描述是正确的:
const bird={
size:'small'
}
const mouse={
name:'Micky',
small:true
}
- A、mouse.bird.size是无效的
- B、mouse[bird.size]是无效的
- C、mouse[bird[‘size’]]是无效的
- D、以上三个选项都是有效的
98、说出打印值的输出结果:
async function getData(){
return await Promise.resolve("I made it!");
}
const data=getData();
console.log(data);
- A、‘I made it!’
- B、Promise {:‘I made It!’}
- C、Promise{}
- D、undefined
99、说出下面构造函数的输出结果:
class Chameleon{
static colorChange(newColor){
this.newColor=newColor;
return this.newColor;
}
constructor({newColor='green'}={}){
this.newColor=newColor;
}
}
const freddie=new Chameleon({
newColor:'purple'
})
freddie.colorChange('orange')
- A、orange
- B、purple
- C、green
- D、TypeError
100、说出下面的打印输出结果:
function Person(firstName,lastName) {
this.firstName=firstName;
this.lastName=lastName;
}
const lydia=new Person('Lydia','Hallie');
const sarch=Person('Sarch','Smith');
console.log(lydia);
console.log(sarch);
- A、Pseron {fistName:‘Lydia’,lastName:‘Hallie’} and undefined
- B、Person {firstName:‘Lydia’,lastName:‘Hallie’} and Person {firstName:‘Sarah’,lastName:‘Smith’}
- C、Person {firstName:‘Lydia’,lastName:‘Hallie’} and {}
- D、Person {firstName:‘Lydia’,lastName:‘Hellie’} and ReferenceError
部分题目参考:https://github.com/lydiahallie/javascript-questions/blob/master/zh-CN/README-zh_CN.md
原文链接:https://mp.weixin.qq.com/mp/homepage?__biz=MzI2NTQ5NTE4OA==&hid=7&sn=b6e703f14342dd6d416520b30bcb01f5&scene=25&uin=&key=&devicetype=Windows+10+x64&version=63020184&lang=zh_CN&ascene=1&session_us=gh_c36046921bbe&fontgear=1
最后
以上就是隐形蜜粉为你收集整理的JavaScript100道大厂笔试面试题(一)的全部内容,希望文章能够帮你解决JavaScript100道大厂笔试面试题(一)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复