• 一些奇怪的Javascript用法


    阅读AngularJS时,看到一些奇怪的Javascript用法。
    1.(function(){
            a.work=function(){}
       })(a)
       声明一个匿名函数并执行


    2. (new (function(){
            this.al=function(){alert(123);};
       })).al();

    一样是声明匿名函数并实例化一个对象
       一个变体:
        function Mouse(a){
            this.al=function(){
                alert(a);
            };
        }
        var p=(new (Mouse)(123));
        p.al();
        
    3. this.push=[].push


    4.小数精度
        0.3-0.2!=0.099999999
    其实这不是Javascript的问题,而是所有采用二进制浮点数的编程语言(包括Java)都会有的问题:能够精确表示二进制的小数,如1/2,1/4,1/1024,
    但是没法精确表示10进制的小数,如0.1 .
    现在才明白我现在这个项目中为什么涉及钱的数字都乘以了100。就是为了避免10进制小数运算的问题:乘以100后就变成整数了。

    5.作用域
    var scope='global';
    function f(){
        console.log(scope);    //输出undefined,而不是 global
        var scope='local';        //赋值
        console.log(scope);    //输出local
    }
    因为Javascript没有块作用域的概念,而是函数作用域的概念,也就是在函数内部声明的所有变量在函数体内始终是可见的,那么上面的代码相当于
    function f(){
        var scope;
        console.log(scope);    //输出undefined,而不是 global
        scope='local';        //赋值
        console.log(scope);    //输出local
    }

    6.eval 函数
    它接受一个字符串,字符串的内容就是javascript代码。eval可以编译这段代码并执行.如下:
    var name='Tom';
    eval("name='Mike'");
    console.log(name); =>这里name 变成了Mike
    可以发现eval中尽然可以使用eval外面的变量


  • 相关阅读:
    Beta版使用说明
    【每日scrum】NO.7
    【每日scrum】NO.6
    【每日scrum】NO.5
    【每日scrum】NO.4
    【每日scrum】NO.3
    【每日scrum】NO.2
    【每日scrum】NO.1
    运行及总结
    测试与调试
  • 原文地址:https://www.cnblogs.com/formyjava/p/4160480.html
Copyright © 2020-2023  润新知