面试题

1. 隐式类型的转换

var object1 = {toString:function(){return 'object1'}, valueOf:function() {return 10}}
var object2 = {toString: function(){return 'object2'}, valueOf: function() {return 20}}
var object3 = {toString: function(){return 'object3'}, valueOf: function(){return 30}}
console.log((object1+object2+object3) + object1 +-- object1)

结果为49,这里使用就是object的隐式类型转换。

隐式类型转换主要涉及到三种类型转换:

1、将值转为原始值,ToPrimitive()。

js引擎内部的抽象操作ToPrimitive有着这样的签名:

ToPrimitive(input, PreferredType?)

input是要转换的值,PreferredType是可选参数,可以是Number或String类型。他只是一个转换标志,转化后的结果并不一定是这个参数所值的类型,但是转换结果一定是一个原始值(或者报错)。

2、将值转为数字,ToNumber()。

(1)  如果输入的值已经是一个原始值,则直接返回它

(2)  否则,如果输入的值是一个对象,则调用该对象的valueOf()方法, 如果valueOf()方法的返回值是一个原始值,则返回这个原始值。

(3)  否则,调用这个对象的toString()方法,如果toString()方法返回的是一个原始值,则返回这个原始值。

(4)  否则,抛出TypeError异常。

3、将值转为字符串,ToString()。

(1)  如果输入的值已经是一个原始值,则直接返回它

(2)  否则,调用这个对象的toString()方法,如果toString()方法返回的是一个原始值,则返回这个原始值。

(3)  否则,如果输入的值是一个对象,则调用该对象的valueOf()方法, 如果valueOf()方法的返回值是一个原始值,则返回这个原始值。

(4)  否则,抛出TypeError异常。

PreferredType的值按照下面的规则来设置:

1、该对象为Date类型,则PreferredType被设置为String

2、否则,PreferredType被设置为Number

所以在上面的表达式中,逗号表达式显示的是最后一个表达式的结果----object3,object3+object1,则先把对象类型转换成原始值---number类型,所以最后的结果是49

2. http的缺点有哪些?

   http主要存在三大缺点:

     1、通信使用明文,内容有可能被窃听

     2、不验证对方的身份,因此有可能遇到伪装

     3、无法验证报文的完整性,数据有可能被篡改

3. 请输出下面函数的内容

var a = true
setTimeout(function() {
    a = false
}, 100)
while(a) {
    console.log('函数执行了')
}

该函数会一直输出‘函数执行了’,因为js是单线程,所以while循环会一直执行,setTimeout函数永远不会被执行

4. relative和absolute定位

      1、relative定位只会影响自己的位置,不会影响其它元素位置和大小的变化

      2、relative定位会产生一个新的定位上下文

      3、absolute元素具有包裹性,可以保证子元素和父元素大小一致

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值