一些奇怪的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外面的变量
一些奇怪的Javascript用法的更多相关文章
- JavaScript 用法
JavaScript 用法 HTML 中的脚本必须位于 <script> 与 </script> 标签之间. 脚本可被放置在 HTML 页面的 <body> 和 & ...
- JavaScript用法
JavaScript 用法 JavaScript 语句,会在页面加载时执行. <body> 中的 JavaScript <!DOCTYPE html> <html> ...
- JavaScript —— 用法 输出
用法 必须在<script>标签内 可以在<body>和<head>部分中 不限数量 <script> ... </script> 即可,不 ...
- JS(1) JavaScript 用法
HTML 中的脚本必须位于 <script> 与 </script> 标签之间. 脚本可被放置在 HTML 页面的 <body> 和 <head> 部分 ...
- 一些奇怪的JavaScript试题
JavaScript有很多地方和我们熟知的C.Java等的编程习惯不同,这些不同会产生很多让人意想不到的事情.前段时间在知乎有人发了写Javascrtip试题,觉得挺好玩的,这里跟大家分享一下. 01 ...
- javascript:;用法集锦
如果是个# ,就会出现跳到顶部的情况,个人收藏的几种解决方法:1:<a href="####"></a> 2:<a href="javasc ...
- 1. 现代 javascript 用法 简介 及 babel
简介 包含 ECMAScript 基本概念,babel 使用 ,eslint 使用 以及新语法的介绍 和使用经验 ECMAScript 概念 ECMASctipt 是一种由 Ecma (前身为欧洲计算 ...
- 从零构建JavaScript的对象系统
一.正统的类与继承 类是对象的定义,而对象是类的实例(Instance).类不可直接使用,要想使用就必须在内存上生成该类的副本,这个副本就是对象. 以Java为例: public class Grou ...
- javascript通用事件封装
随着最近几年Html5的兴起,越来越多的应用采用html5进行实现,一个优秀的网页应用不但需要美观简洁的UI界面,更需要一个良好的交互.网页应用大部分的交互需要用javascript事件进行实现.虽然 ...
随机推荐
- 3.19课·········HTML---标签与表格
HTML(Hyper Text Markup Language,超文本标记语言) <html> ------开始标签 <head>----网页上的控制信息 <title& ...
- hadoop 根据secondary namenode恢复namenode
refer to http://www.cnblogs.com/Richardzhu/p/3435989.html http://blog.csdn.net/wuzhilon88/article/de ...
- JVM - 堆外内存
看了不少资料,总结下: 堆外内存 / 直接内存(Direct Memory)JDK1.4中引入的NIO类,基于channel和Buffer的I/O方式,可用Native库直接分配堆外内存,然后利用一个 ...
- 319 Python基础之格式化输出、逻辑运算符、编码、in not in、while else、
一.格式化输出 占位符%,字符串占位符%s,数字占位符%d 第一种name = input('姓名') age = input('年龄') hobby = input ("爱好") ...
- 【Flask】SelectedField 同步数据库
## 如果不加入__init__函数会导致,SelectedField表单生成只有里面的内容不会和数据库同步(即数据库添加,删除字段时表单中数据项和初始化时一致.下一次重启app是才会同步) clas ...
- web框架之Django<一、初识>
一.什么是web框架 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演. 对于所有的 ...
- 单链表(C语言实现)
链表结构: SList.h //-------------------------------------------------------------------------- /* **功能:应 ...
- C语言伪随机数的注意事项
不要将srand(time(NULL))或srand(time(0))放到循环中,因为我们两次调用srand()函数设置随机数种子之间的时间间隔不超过1s,等价于使用了一个固定的随机数种子,会出现相同 ...
- grep egrep
grep: Global search REgular expression and Print out the line. 作用: 文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查:打 ...
- java入门了解10
1.IO: 1.File (一)注意: a.可以表示文件或者文件夹(也可称为目录) b.创建的File对象实际上不存在的文件只是代表了一个抽象路径 c.Windows中分隔符'\'('//'也可以); ...