JS:前端面试题(二)

1.null,undefined 的区别?

null 表示一个对象被定义了,值为“空值”;

undefined 表示不存在这个值。

typeof undefined //"undefined"

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

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

typeof null //"object"

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

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

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

再来一个例子:

JS:前端面试题(二)

2.说几条写JavaScript的基本规范?

(2).请使用 ===/!==来比较true/false或者数值

(3).使用对象字面量替代new Array这种形式

(4).不要使用全局函数。

(5).Switch语句必须带有default分支

(6).函数不应该有时候有返回值,有时候没有返回值。

(7).for循环必须使用大括号

(8).if语句必须使用大括号

(9).for-in循环中的变量 应该使用var关键字明确限定作用域,从而避免作用域污染。

3.eval是做什么的?

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

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

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

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

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

使用它区别是:

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

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

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

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

(5).提高编译器效率,增加运行速度;

(6).为未来新版本的Javascript标准化做铺垫。

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

[1, NaN, NaN]

因为 parseInt 需要两个参数 (val, radix),其中 radix 表示解析时用的基数。

map 传了 3 个 (element, index, array),对应的 radix 不合法导致解析失败。

parseInt方法将会通过以下方式被调用

JS:前端面试题(二)

parseInt的第二个参数radix为0时,ECMAScript5将string作为十进制数字的字符串解析;

parseInt的第二个参数radix为1时,解析结果为NaN;

parseInt的第二个参数radix在2—36之间时,如果string参数的第一个字符(除空白以外),不属于radix指定进制下的字符,解析结果为NaN。

parseInt("3", 2)执行时,由于"3"不属于二进制字符,解析结果为NaN。

6.快速 排序的思想并实现一个快排?

“快速排序”的思想很简单,整个排序过程只需要三步:

(1)在数据集之中,找一个基准点

(2)建立两个数组,分别存储左边和右边的数组

(3)利用递归进行下次比较

JS:前端面试题(二)

JS:前端面试题(二)

希望这些面试题目能对各位有所帮助,小编这里呢整理了自己这么几年来学习web前端的资料,相信有很多小伙伴学习web前端,那么就关注小编,私信【学习】,即可免费获得哦!


分享到:


相關文章: