首页 > 编程语言 > 详细

一些奇怪的Javascript用法

时间:2014-12-12 22:09:46      阅读:374      评论:0      收藏:0      [点我收藏+]

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


一些奇怪的Javascript用法

原文:http://www.cnblogs.com/formyjava/p/4160480.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!