最新文章:

您的位置: 富录-前端开发|web技术博客 > 前端面试题汇总 > 前端面试题(五)

前端面试题(五)

发布时间:2018年03月16日 评论数:抢沙发阅读数: 5623

    下面运行结果是什么?

    var a = [1, 2, 3],
        b = [1, 2, 3],
        c = [1, 2, 4];
    console.log(a == b);
    console.log(a === b);
    console.log(a > c);
    console.log(a < c);

           运行结果为:false false false true

           对于console.log(a=b);因为a和b都是数组,是object类型,object类型在进行=比较的时候,比较的对象的引用地址是否相同,很明显,a和b不是同一个对象,所以引用地址不同,故返回false;

           对于console.log(a===b);===运算符要求两边值和数据类型都要相同,a和b的数据类型都是object/Array,但是由于上面的分析可知,a和b的值并不相同,所以也是返回false.

           对于console.log(a>c);数组进行>或者<运算比较的时候,首先要调用valueOf()方法进行转换成基本类型的值,因为valueOf()方法返回的仍然是数组,所以要继续调用toString()方法进行转换,返回值为数组元素用逗号连接的字符串,是基本类型的值可以用于比较,所以console.log(a>c)等价于console.log(a.toString()>c.toString())等价于console.log("1,2,3">"1,2,4")相当于是两个字符串在比较大小,而字符串比较大小的时候,是字符串从左到右依次转换成ASII码进行比较,前面1,2,相同所以实际上是比较3和4的ASII码值的大小,很明显3的ASII码比4的ASII码小,所以返回false.

           对于console.log(a<c)

           同3分析,故返回true.


    下面运行结果是什么?

    var two   = 0.2;
    var one   = 0.1;
    var eight = 0.8;
    var six   = 0.6;
    [two - one == one, eight - six == two]

           运行结果为: [true,false]

           几乎所有语言在进行浮点数四则运算时都会出现精度误差的问题(只不过想java等这些语言已经处理过了,所以误差不那么明显)这是因为计算机的运算是二进制的,很多小数在转换成二进制是无限循环的,但计算机不支持无限循环,所以得根据支持的精度进行舍入处理。

           0.2二进制为0.00110011...001101

           0.1二进制为0.000110011...001101

           0.2的二进制相对于0.1的二进制做了1位的移位所以

           0.2 - 0.1 == 0.1//true

           0.8 - 0.6 == 0.2//false


    下面运行结果是什么?

    var a = '8' + 2;
    var b = '8' - 2;

           运行结果为82 6。

           字符串和任何类型相加,都会变成字符串拼接,运算时自动先把其他类型转换成字符串类型。

           任何类型和Number类型做减法,先把其他类型转换成Number类型,转不了的则为NaN。

           

    下面运行结果是什么?

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

           运行结果为:1 error

           这个题目是变量提升和连等赋值问题,首先连等操作符是从右向左赋值的,y = 1; var x = y; 变量x是用var进行声明并赋值的所以是局部变量, 变量y是未用var声明的变量在javscritp中是一个隐式全局变量。所以在外面consoloe.log(y) 是1, console.log(x) 报错 x is no defined.

二维码加载中...
本文作者:DGF      文章标题: 前端面试题(五)
本文地址: https://arbays.com/post/78     本文已被百度收录!
版权声明:若无注明,本文皆为“富录-前端开发|web技术博客”原创,转载请保留文章出处。
挤眼 亲亲 咆哮 开心 想想 可怜 糗大了 委屈 哈哈 小声点 右哼哼 左哼哼 疑问 坏笑 赚钱啦 悲伤 耍酷 勾引 厉害 握手 耶 嘻嘻 害羞 鼓掌 馋嘴 抓狂 抱抱 围观 威武 给力
提交评论

清空信息
关闭评论