微众银行前端笔试记录

真不是考试的料啊,一到考试就会犯懵,这篇博客记录一下考试的时候遇到的自己做不对的点.

  • 浮点数运算

    let y = 0.3 - 0.2   
    y === 0.1 //false
    

    原因很简单,因为JS在进行浮点数运算的时候会存在误差,所以0.3 - 0.2 不等于0.1(唉,考试的时候怎么就没想到啊,懵啊懵)
    微众银行前端笔试记录
    要解决浮点数运算,一个办法是使用toFixed(),截取部分,不过这样不够准确(有些时候需要精确数值),另一个办法是把它们乘成10的n次幂,进行运算后再出去10的n次幂,这样就比较准确了,不过浮点数转成转成整数后得小于安全值2^53。

  • eval()
    这个真是被自己坑了,自己当时看书看到书上说尽量不要用eval(),就没关注eval(),笔试后好好看了一下eval()
    首先,eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码
    明确一下eval()不能在严格模式下使用,不然会报错;
    然后,eval在函数中创建的变量是局部变量,就如微众银行前端笔试记录

    当然有办法让eval创造全局变量,就是使用window.eval()
    微众银行前端笔试记录

  • with()
    这个with()有延长作用域链的作用,自己之前做了笔记,贴出来

    在Javascript的作用域中(作用域,想想就是函数块,每个函数都会有个函数名,就算是匿名函数也有个空函数名),那么创建作用域的时候,本层的标识符就可以寄托在这个作用域下,而with语句块中作用域的‘变量对象’是只读的,不能存储标识符,只能存储在其上一层,这就是延长作用域链with中首先查找的是相关对象(…参数)的属性,如果没有,才改变全局变量的值

    记录到的就这么多啦,如果有错误,希望大家指出共同进步。同时希望自己能找到实习,fighting!