前端基础面试题

20.11.15.下列表达式你觉得那个会报错(A)

A.1 ++;
B.1…toString()
C.NAN.toString();
D.typeof money.

解析:1…toString() == “1”;(由于要判定第一个点是调用还是方法会产生误解,故数字的话是num…toString() 两点调用方法),NaN.toString() == “NaN”;typeof money == “undefined”;

20.11.16.下列关于this指向说法不正确的是(B)

A.call 和 apply 在参数中有区别,后者采用数组传参.
B.call 函数会返回一个函数。
C.bind后的函数this指向是确定的。
D.call函数在执行的时候改变this指向。

解析:this 谁调用指向谁 call与apply的第一个参数都为this的指向,call后面的参数为传入的参数列表,apply为参数的数组.

20.11.17下列代码的执行结果?

  var  obj = {
    name:'obj',
  }
  var bar = {
    name:'bar',
    show:function () {
      var name = 'foo';
      console.log(this.name);

    }
  }
  bar.show.call(obj);
// 答案 'obj'

20.11.18下列代码执行的结果?

  let value = 'web';
  function bar() {
    let value = 'duyi';
    function foo() {
      console.log(value);
    }
    return foo;
  }
  bar()();
  // duyi

20.11.19下列代码执行后a的值与b的值分别是多少

let a = {n:1};
let b = a;
		a.m = a = {m:2};
console.log(a);
console.log(b);
//a : {m:2};
	b:{m:{m:2},n:1};

解析: a.m = a = {m:2}; 运算·过程,自右向左,// a -->{m:2},前面a.m == {n:1}.m 增添一个属性,指向未变,
算出 结果b : {m:{m:2},n :1}

20.11.20下列代码执行输出结果是什么?

  function Foo() {

  }
  Foo.prototype = {value:"bar"};
  let foo = new Foo();
  console.log(foo.constructor);
// Object -- 对象

解析: Foo,实例是谁构建的,构造函数就是谁。constructor 是原型链上的属性,foo.constructor 指向原型链上的对象。

20.11.21下列代码执行输出的结果是什么?

function Person() {
	this.name = "bar";
  return true;
}
let a = new Person();
console.log(a);
// {name:"bar"}

解析:构造函数中,大驼峰命名法,return 如果返回ture flase number 等原始值,自动忽略,如果返回的是一个对象,就以返回的对象为值。 原始数据类型:Number String null boolean Symbol Undefined。

20.11.22下列代码执行输出的结果是什么?

let num = 4;
      num.length = 3;
			// 包装类的过程,变成数字类型的的对象-->new Number(num).lenth = 3;
      console.log(num.length);
			//对应的包装类函数过程是独立的.
// undefined

解析:原始值:number ,string ,Booleam 都有对应的包装类对象。

20.11.23 你知道Javascript中最大的安全整数吗?

max -->Number.MAX_SAFE_INTEGER
min -->Number.MIN_SAFE_INEGER
// 1.超出这个数计算就不准确了。 -->Number.MAX_SAFE_INTEGER +1 == Number.MAX_SAFE_INTEGER +2 -->true
// 2.该数为2的53次方-1 --> Math.pow(2,53) - 1;

20.11.24Javascript中把非数字转化成数字的方式有哪些?

Number
parseInt
+
-
Math对象

20.11.25JavaScript创建数组的方式有哪些?

new Array()
[]
let arr = new Array(10) // 10是数组长度
let arr = new Array(1,2,3,4); // 数组元素
let arr2 = [1,2,3];

20.11.26JavaScript 中注释存在几种,都是什么?

21.单行注释 -->//
2.多行注释-->/* */

20.11.27 手写圣杯模式

    function inherit(target,origin) {
      function F() {};
      let f = new F();
      target.prototype = f;
      target.prototype.constructor = target;
    }

20.11.28下列代码输出是什么结果?

	a = 10;
let a = 10;
// 报错

20.11.29下列代码输出的结果是什么?

    function a() {
      console.log('a');

    }
    function b() {
      console.log('b');
    }
    true && a();
    false || b();
		// 'a'  'b'

20.11.30你知道哪些遍历数组的方式吗?

       let arr = [1,2,3,4,5];
        // 遍历下标
        for(let i = 0; i < arr.length;i ++) {
            console.log(arr[i]);
        }
        // for in 遍历对象 遍历下标
        for(let index in arr) {
            console.log(arr[index]);
        }
        // ES5 forEach
        arr.forEach(function (item,index,self){
            console.log(self);
        })
        // ES6: for of (具有迭代器接口的对象进行遍历)
        for(let i of arr) {
            console.log(arr[i]);

        }

20.12.01下列代码的输出结果是什么?

function fn1() {
  let a = 'fun;'
  }
function fn2(){
  return;
}
let foo = fn1();
let bar = fn2();
console.log(foo,bar);
// undefined undefined

解析:没有明确返回值的函数,返回值是undefined,直接return 的返回值也是undefined。

20.12.02如何把一个对象的属性合并到另一个对象上?

let obj1 = {
    name:'ljy',
    age:18
} 
let obj2 = {
    name:'zbt',
   
    value:'666'
}
for(let prop in obj2) {
    obj1[prop] = obj2[prop];
}

let item = Object.assign({},obj1,obj2);
console.log(item);
// 遍历
// Object.assign

20.12.03判断字符串或数组中是否存在某个元素有哪些方法?

let arr = [1,2,3];
let str = '234'

console.log(arr.indexOf(4));
console.log(str.indexOf('34'))
console.log(arr.includes(2));
console.log(str.includes('234'))

答案
// String.prototype.indexOf
// Array.prototype.indexOf
// ES5中的方法
// String.prototype.includes
// Arayy.prototype.includes

20.12.04下列代码的输出结果是什么?

let time1 = "2019-02-14  21:00:00";
let time2 = "2019-05-01 09:00:00";
console.log(time1>time2);

// false

20.12.05如何把字符串按照特定要求补全至指定长度

例如'123' 补全到长度为6 => '000123'
或者 '123' 用ab填补 ,补长度为8'123ababab'

console.log('123',padStart(6,'0'));
console.log('123'.padEnd(8,'ab'));

//答案
String.prototype.padStart
String.prototype.padEnd

20.12.06如何优雅地获取数组中的最大值

let arr = [1,2,3,4,5,6];
console.log(Math.max.apply(null,arr));
console.log(Math.max(...arr)); // 扩展运算符

// 答案
Math.max.apply(null,arr);
// 更优雅
Math.max(...arr);

20.12.07如何清空数组和截断数组

清空:arr.length = 0;
截断:arr.length = n; // n 是截断位置

2020.12.08下列代码的输出结果是什么?

  let arr = [1,'' ,0,NaN,undefined,false].filter(Boolean);
        console.log(arr)
// true false true false false false
//let arr =   [1,2,3].filter(function(index,item,that){
 //         return index%2;
 //     })
 //     console.log(arr)

解析:filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
注意: filter() 不会对空数组进行检测。
注意: filter() 不会改变原始数组。

2020.12.09.img标签的title和alt是什么,起到什么作用?

    <img src="(图片地址)" title="我提示你了" alt="这里曾经是一张图片">
title-->图片提示符
alt-->图片占位符

2020.12.10如何检查元素是否具有指定元素的类名?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div class="a aa b c ad" id="demo"></div>
    <script>
      // 封装函数
        let div = document.getElementById('demo');

        function hasClass(el,className) {
            return el.classList.contains(className);
        }
       console.log(hasClass(div,'aa'))
    </script>
</body>
</html>

2020.12.12 Object.is() 与===区别是什么?

//    NaN === NaN  // false
    //    +0 === -0    // true
    //    object.is(NaN,NaN); //true
    //    object.is(+0,-0); // false

解析:object.is()是es6的语法它更加符合数学逻辑。

2020.12.13 substring 与slice的区别?(百度面试题)

解析:substring 与 slice 都是字符串截取功能,不同在于substring end < start 与 end 会交换
slice end < start 返回为空;
substring end ,start小于0,从字符尾串部分记。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

竹林海中敲代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值