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


  • 相关阅读:
    线段树的一种简化实现[原] by 踏雪赤兔
    C 语言qsort 函数详解
    【转载】Amit’s A star Page 中译文
    Poj3468 线段树 成段更新
    在VMware的CentOS中运行Cadence IC 615的怪现象
    安装非认证的chrome插件和设置文件夹的权限
    [模拟IC]基础知识1
    如何删除 Windows.old 文件夹?
    美国签证面签经历
    三个不同属性的GTD工具
  • 原文地址:https://www.cnblogs.com/formyjava/p/4160480.html
Copyright © 2011-2022 走看看