阅读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用法的更多相关文章

  1. JavaScript 用法

    JavaScript 用法 HTML 中的脚本必须位于 <script> 与 </script> 标签之间. 脚本可被放置在 HTML 页面的 <body> 和 & ...

  2. JavaScript用法

    JavaScript 用法 JavaScript 语句,会在页面加载时执行. <body> 中的 JavaScript <!DOCTYPE html> <html> ...

  3. JavaScript —— 用法 输出

    用法 必须在<script>标签内 可以在<body>和<head>部分中 不限数量 <script> ... </script> 即可,不 ...

  4. JS(1) JavaScript 用法

    HTML 中的脚本必须位于 <script> 与 </script> 标签之间. 脚本可被放置在 HTML 页面的 <body> 和 <head> 部分 ...

  5. 一些奇怪的JavaScript试题

    JavaScript有很多地方和我们熟知的C.Java等的编程习惯不同,这些不同会产生很多让人意想不到的事情.前段时间在知乎有人发了写Javascrtip试题,觉得挺好玩的,这里跟大家分享一下. 01 ...

  6. javascript:;用法集锦

    如果是个# ,就会出现跳到顶部的情况,个人收藏的几种解决方法:1:<a href="####"></a> 2:<a href="javasc ...

  7. 1. 现代 javascript 用法 简介 及 babel

    简介 包含 ECMAScript 基本概念,babel 使用 ,eslint 使用 以及新语法的介绍 和使用经验 ECMAScript 概念 ECMASctipt 是一种由 Ecma (前身为欧洲计算 ...

  8. 从零构建JavaScript的对象系统

    一.正统的类与继承 类是对象的定义,而对象是类的实例(Instance).类不可直接使用,要想使用就必须在内存上生成该类的副本,这个副本就是对象. 以Java为例: public class Grou ...

  9. javascript通用事件封装

    随着最近几年Html5的兴起,越来越多的应用采用html5进行实现,一个优秀的网页应用不但需要美观简洁的UI界面,更需要一个良好的交互.网页应用大部分的交互需要用javascript事件进行实现.虽然 ...

随机推荐

  1. SQL 优化案例

    create or replace procedure SP_GET_NEWEST_CAPTCHA( v_ACCOUNT_ID in VARCHAR2, --接收短信的手机号 v_Tail_num i ...

  2. java入门了解08

    1.集合深入 (一)hashSet实现原理: 当我们添加一个元素,HashSet会计算出其Hash值,再根据hash值在哈希表中找出存储他的位置 有两种情况:a.如果算出的hash值在哈希表中位置没有 ...

  3. EntityFramework 学习 一 Entity Framework 查询设计

    First/FirstOrDefault: using (var ctx = new SchoolDBEntities()) { var student = (from s in ctx.Studen ...

  4. Shiro 集成 Web

    Web 集成 Shiro 的练习项目. Servlet + Shiro 项目结构 新建Maven项目,pom配置如下 <project xmlns="http://maven.apac ...

  5. Mac安装使用kettle

    kettle是一个ETL工具 下载安装 https://jaist.dl.sourceforge.net/project/pentaho/Data Integration/ 选择版本后下载,并解压,如 ...

  6. java读取pdf文档

    import java.io.*;import org.pdfbox.pdmodel.PDDocument;import org.pdfbox.pdfparser.PDFParser;import o ...

  7. PHP消息队列用法实例分析

    这篇文章主要介绍了PHP消息队列用法,结合实例形式分析了PHP消息队列用于Linux下进程间通信的相关技巧,需要的朋友可以参考下   该消息队列用于linux下,进程通信 队列状态信息:具体参考手册

  8. name lookup of 'res' changed for new ISO 'res' scoping

    #include<iostream> using namespace std; int pow ( int val, int exp ); int main() { int val = 2 ...

  9. phpcon china 2017听讲总结

    1. <PHP in 2017>--Rasmus Lerdorf 2. <车轮的服务化service架构>--韩天峰 3. <企点微服务网关演进之路>--郑榕 4. ...

  10. leetcode 231 Power of Two(位运算)

    Given an integer, write a function to determine if it is a power of two. 题解:一次一次除2来做的话,效率低.所以使用位运算的方 ...