【前端面试题-JavaScript】牛客网做题记录day01

正确答案和解析,最后揭晓。

(单选) 1. 在es6中,下面程序运行结果输出,选项结果正确的是

		for(let i=0;i<12;i++){
		} 
		console.log(i);  // ?
		
		const a = 12;
		a = 13;
		console.log(a);  // ?
		
		const g = {
			b:3
		};
		console.log(g.b);  // ?
		
		g.b=12;
		console.log(g.b);  // ?
		
		let [head,...tail] = [1,2,3,4];
		conole.log(tail);  // ?

A、11,13,3,12,[3,4]
B、i not defined ,TypeError,TypeErrpr,4
C、11,12,3,3,4
D、i not defined,TypeError,3,12,[2,3,4]


(单选)2. 如果不给cookie设置过期时间会怎么样?

A、立刻过期
B、永不过期
C、cookie 无法设置
D、在浏览器会话结束时过期

(单选)3. 假设document是HTML文档中的一个节点,点击该节点后会发生什么?

		function test() {
		  this.flag = false;
		  this.change = () => {
		    this.flag = true;
		    console.log(button.flag);
		  };
		}
		const button = new test();
		document.addEventListener("click", button.change);

A、输出true
B、输出false
C、输出undefined
D、报错


(单选)4. 执行以下选项中的程序,输出结果是undefined的是()

A

		var o = {
            age: 18,
            a: {
                fn: function () {
                    console.log(this.age);
                }
            }
        }
        o.a.fn();

B

		class Animal {
            constructor(color) {
                this.color = color;
            }
            getColor() {
                console.log("animal的颜色是" + this.color);
            }
        }
        class Dog extends Animal {
            constructor(color) {
                this.color = color;
            }
        }
        var dog = new Dog("黄色");

C

 		function fn() {
            setTimeout(function () {
                console.log(this);
            }, 100)
        }
        fn();

D

 		var person = {
            sex: "女",
            fn: function () {
                console.log(this.sex);
            }
        }
        person.fn()

(多选题)5. 在ECMAScript6 中,Promise的状态有()

A、Pending
B、Pause
C、Resolved
D、Rejected


解析

  1. 正确答案:D
		for(let i=0;i<12;i++){
		} 
		console.log(i);  // i not defined
		
		const a = 12;
		a = 13;
		console.log(a);  // TypeError
		
		const g = {
			b:3
		};
		console.log(g.b);  // 3
		
		g.b=12;
		console.log(g.b);  // 12
		
		let [head,...tail] = [1,2,3,4];
		conole.log(tail);  // [2,3,4]
  • let 与var不同,let存在块级作用域,在for循环中声明,循环之外销毁 所以 i not defined.
  • const 声明一个常量无法更改,所以TypeError
  • const 声明的是一个常量所以是无法更改的,但是如果const出来的是一个对象的属性是可以更改的。
  • 解构赋值、扩展运算符如下,所以为

MDN-解构赋值
阮一峰ECMAScript6入门——变量的解构赋值
解构赋值语法是一种 Javascript 表达式。可以将数组中的值或对象的属性取出,赋值给其他变量。
阮一峰—扩展运算符

例如:

[a, b, ...rest] = [10, 20, 30, 40, 50];
console.log(rest);
// Expected output: Array [30, 40, 50]
  1. 正确答案:A
  • cookie的有效时间默认为-1,如果不进行设置的话,就会默认在浏览器会话关闭时结束。
  • 可以通过setMaxAge()方法设置cookie的生命期。
  • setMaxAge(0)表示立刻删除该浏览器上指定的cookie
  1. 正确答案:A
    首先需要明白addEventListener的回调函数的函数上下文为触发事件的元素的引用。
    如无意外则change方法改变的flag是节点上的flag,和button无关。
    但是由于change是箭头函数,this与构造函数绑定在一起了,所以改变的flagbuttonflag
  2. 正确答案:A
    A选项——fn()方法内的this指代对象a,由于对象a并没有age属性,因此输出结果为undefined,A选项符合题意;
    B选项——子类对象调用父类getColor()方法,方法内的this指向子类对象,但当子类有自己的构造方法时,必须在其构造方法使用super调用父类的构造方法,否则不能生成this对象,因此B选项会抛出异常,不符合题意;
    C选项——定时器中的this指向window对象,C选项不符合题意;
    D选项——this指向person对象,由于person对象有属性sex,因此可以输出对应的属性值,D选项不符合题意。
  3. 正确答案:ACD
    解释说明如下:Promise对象的状态
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值