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外面的变量


  • 相关阅读:
    基于xmpp openfire smack开发之Android客户端开发[3]
    简单工厂,抽象工厂,工厂模式三者的对照
    【独具慧眼 推荐有礼】找出您心中的技术大牛 活动開始啦!
    ZOJ 3201
    具体解释站点沙盒期的原因表现与解决的方法
    工作,究竟意味着什么
    MVC之查询demo
    学习开淘宝网店
    快排的两种写法
    QTableWidget具体解释(样式、右键菜单、表头塌陷、多选等) (非代理)
  • 原文地址:https://www.cnblogs.com/formyjava/p/4160480.html
Copyright © 2011-2022 走看看