前端面试常见错误

因为连接符的优先级高于三元运算符,所以 'Value is ' + true ? 'Something' : 'Nothing',返回的结果应该是Something。

如果我们想先进行三目运算,需要用圆括号把它括起来:'Value is ' + (val === 'smtg' ? 'Something' : 'Nothing'),这时候返回的结果就是:Value is Something。

var i=100
i++;
var j=i++;
var y=++j;
console.log(y,i,j)

这道题考的是一元运算符++前置和后置时的执行顺序,简单来说,后置的++,先使用,再自加;前置的++,先自加,再使用

题目中执行var j=i++;时,i++已经执行过一次,所以 i=101, j=101,执行完毕后再执行 i++,此时 i=102。

执行var y=++j;时,先进行++运算,此时 j=102,赋值给 y,因此这道题的答案为:102,102,102。

 (function(){ var x = y = 1; })(); 
console.log(y);
console.log(x);

答案: 1, error

解析:这道题目涉及到变量提升的范围,以及赋值语法

var x=y=1 等价于 var x=1; y=1; 这里的y会被提升至全局域。

var x=1,y=1 等价于var x=1; var y=1, 这样写的话,x,y都是局部变量,不会被提升

javascript中,'5'+3和'5'-3的结果是?

答案:53  2
解析:javascript 中, '5' + 3 的运算结果为 53, 当执行加法运算时,因为第一个操作数'5'为字符串形式,所以优先采用字符串连接。
而 '5' - 3 的运算结果为 2,因为减法运算时,会尝试将操作数转换为 Number,再进行运算。所以 等同于 5 - 3,结果为 2。
同理,3 + 3 + '5',计算结果应为 '65' (string), 从左到右计算,3 + 3,因为两个操作数都是 number,所以直接加法,结果为6,再计算 6 + '5',因为有一个操作数是 string,所以按字符串连接,结果就是 '65'。(以示区别,将字符串类型的用单引号括起来方便识别)

var a = {}
b = Object.prototype
res = [a.prototype === b, Object.getPrototypeOf(a) === b]

console.log(res)

答案:  [false, true]

解析:getPrototypeOf是ES5中实例获取原型的标准方法,而__proto__则是非标准方法。

  • C.prototype用于建立由 new C() 创建的对象的原型。
  • Object.getPrototype(obj)是ES5中用来获取obj对象的原型对象的标准方法。
  • obj.__proto__是获取obj对象的原型对象的非标准方法。

Object.getPrototypeOf(u) === User.prototype; // true
u.__proto__ === User.prototype; // true
 

所以一般我们是不会直接访问C.prototype去获取原型对象的,在ES5的环境中,我们使用Object.getPrototype(obj)来获取原型对象,而在不支持ES5的环境中,我们可以考虑用__proto__这样的非标准方法来当做权宜之计

以上内容转载自:1. 理解prototype、getPrototypeOf和_proto_之间的不同_Salmos Hu的博客-CSDN博客

for...of循环可以使用的范围包括数组、Set 和 Map 结构、某些类似数组的对象(比如arguments对象、DOM NodeList 对象)、 Generator 对象,以及字符串。

对象类型不能直接使用for...of

DOM0级
1 使用赋值方式绑定事件;
2 只能在冒泡阶段触发;
3 只能绑定一个事件函数;
4 通过置空onclick属性解绑事件;
5 事件函数this属性引用当前函数对象。

DOM2级
1 非IE方式
1.1 使用addEventListeren绑定事件;
1.2 事件名无on前缀;
1.3 使用addEventListeren第三个参数控制事件触发阶段;
1.4 可绑定多个事件函数;
1.5 多个事件函数的书法顺序和绑定顺序一样;
1.6 事件函数this属性引用当前函数对象;

2 IE方式
和非IE不同的是以下几点:
2.1 事件名带on前缀;
2.2 事件函数this属性引用全局对象;
2.3 多个事件函数的书法顺序和绑定顺序相反;


以上内容转载自:https://www.jianshu.com/p/b850978c2ee8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值