zoukankan      html  css  js  c++  java
  • 一些奇怪的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外面的变量


  • 相关阅读:
    一些软件设计的原则
    网站的分布式架构
    架构设计--逻辑层 vs 物理层
    社会化海量数据采集爬虫框架搭建
    面向设计原则理解
    职场中架构师面试,你会怎么回答?
    支撑5亿用户、1.5亿活跃用户的Twitter最新架构详解及相关实现
    关键路径法
    团队建设动车模型
    案例:双代号网络图在控制工程造价中的应用
  • 原文地址:https://www.cnblogs.com/formyjava/p/4160480.html
Copyright © 2011-2022 走看看