2019最新前端JavaScript面试题集锦(一)(满满都是干货)

JavaScript面试题集锦

1.js基础

1.eval是做什么的?

 它的功能是把对应的字符串解析成JS代码并运行;

 应该避免使用eval,不安全,非常耗性能(2次,一次解析成js语句,一次执行)。

 由JSON字符串转换为JSON对象的时候可以用eval,var obj =eval('('+ str +')');

2.什么是window对象? 什么是document对象?

 window对象是指浏览器打开的窗口。

 document对象是Document对象(HTML 文档对象)的一个只读引用,window对象的一个属性。

3.nullundefined 的区别?

 null      表示一个对象是“没有值”的值,也就是值为“空”;

 undefined     表示一个变量声明了没有初始化(赋值);

 undefined不是一个有效的JSON,而null是;

 undefined的类型(typeof)是undefined;

 null的类型(typeof)是object;

 

 Javascript将未赋值的变量默认值设为undefined;

 Javascript从来不会将变量设为null。它是用来让程序员表明某个用var声明的变量时没有值的。

 typeof undefined

    //"undefined"

    undefined :是一个表示"无"的原始值或者说表示"缺少值",就是此处应该有一个值,但是还没有定义。当尝试读取时会返回 undefined;

    例如变量被声明了,但没有赋值时,就等于undefined

 typeof null

    //"object"

    null : 是一个对象(空对象, 没有任何属性和方法);

    例如作为函数的参数,表示该函数的参数不是对象;

 

 注意:

    在验证null时,一定要使用 === ,因为 == 无法分别 null 和 undefined

    null == undefined // true

    null === undefined // false

 再来一个例子:

    null

    Q:有张三这个人么?

    A:有!

    Q:张三有房子么?

    A:没有!

 

    undefined

    Q:有张三这个人么?

    A:有!

    Q: 张三有多少岁?

    A: 不知道(没有被告诉)

  1. ["1", "2", "3"].map(parseInt) 答案是多少?

 parseInt() 函数能解析一个字符串,并返回一个整数,需要两个参数 (val, radix)

 其中 radix 表示要解析的数字的基数。【该值介于 2 ~ 36 之间,并且字符串中的数字不能大于radix才能正确返回数字结果值】;

 但此处 map 传了 3  (element, index, array),我们重写parseInt函数测试一下是否符合上面的规则。

 

 function parseInt(str, radix) {

     return str+'-'+radix;

 };

 var a=["1", "2", "3"];

 a.map(parseInt);  // ["1-0", "2-1", "3-2"] 不能大于radix

 

 因为二进制里面,没有数字3,导致出现超范围的radix赋值和不合法的进制解析,才会返回NaN

 所以["1", "2", "3"].map(parseInt) 答案也就是:[1, NaN, NaN]

5.事件是?IE与火狐的事件机制有什么区别? 如何阻止冒泡?

1. 我们在网页中的某个操作(有的操作对应多个事件)。例如:当我们点击一个按钮就会产生一个事件。是可以被 JavaScript 侦测到的行为。

2. 事件处理机制:I.E.是事件冒泡、Firefox同时支持两种事件模型,也就是:捕获型事件和冒泡型事件;

3. ev.stopPropagation();(旧ie的方法 ev.cancelBubble = true;)

6.javascript 代码中的"use strict";是什么意思 ? 使用它区别是什么?

 use strict是一种ECMAscript 5 添加的(严格)运行模式,这种模式使得 Javascript 在更严格的条件下运行,

 

 使JS编码更加规范化的模式,消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为。

 默认支持的糟糕特性都会被禁用,比如不能用with,也不能在意外的情况下给全局变量赋值;

 全局变量的显示声明,函数必须声明在顶层,不允许在非函数代码块内声明函数,arguments.callee也不允许使用;

 消除代码运行的一些不安全之处,保证代码运行的安全,限制函数中的arguments修改,严格模式下的eval函数的行为和非严格模式的也不相同;

 

 提高编译器效率,增加运行速度;

 为未来新版本的Javascript标准化做铺垫。

7.Javascript中,有一个函数,执行时对象查找时,永远不会去查找原型,这个函数是?

 hasOwnProperty

 

 javaScript中hasOwnProperty函数方法是返回一个布尔值,指出一个对象是否具有指定名称的属性。此方法无法检查该对象的原型链中是否具有该属性;该属性必须是对象本身的一个成员。

 使用方法:

 object.hasOwnProperty(proName)

 其中参数object是必选项。一个对象的实例。

 proName是必选项。一个属性名称的字符串值。

 

 如果 object 具有指定名称的属性,那么JavaScript中hasOwnProperty函数方法返回 true,反之则返回 false。

8.JSON 的了解?

 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。

 它是基于JavaScript的一个子集。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值