博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript100道大厂笔试面试题(一)
阅读量:428 次
发布时间:2019-03-06

本文共 15464 字,大约阅读时间需要 51 分钟。

以下题目来自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里的内容顺序为:

    
  • 百度
  •     
  • 阿里
  •     
  • 腾讯
  •     

    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、x==5|| y==5 的结果为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(a==b) stop()'与语句‘(a==b)&&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

    转载地址:http://hsfyz.baihongyu.com/

    你可能感兴趣的文章