1.null,undefined 的区别?
null 表示一个对象被定义了,值为“空值”;
undefined 表示不存在这个值。
typeof undefined //"undefined"
undefined :是一个表示"无"的原始值或者说表示"缺少值",就是此处应该有一个值,但是还没有定义。当尝试读取时会返回 undefined;
例如变量被声明了,但没有赋值时,就等于undefined
typeof null //"object"
null : 是一个对象(空对象, 没有任何属性和方法);
例如作为函数的参数,表示该函数的参数不是对象;
注意:在验证null时,一定要使用 === ,因为 == 无法分别 null 和 undefined
再来一个例子:
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方法将会通过以下方式被调用
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)利用递归进行下次比较
希望这些面试题目能对各位有所帮助,小编这里呢整理了自己这么几年来学习web前端的资料,相信有很多小伙伴学习web前端,那么就关注小编,私信【学习】,即可免费获得哦!
閱讀更多 計算機語言 的文章
關鍵字: 跳槽那些事儿 JSON ECMAScript