【javascript模式】Chapter2: 基本 技巧
1 尽量少用全局变量,最好一个应用程式只有一个全局变量
隐含全局变量(不使用var声明)与明确定义的全局变量区别:
(1)使用var创建的全局变量(在函数外部声明)不能用delete删除
(2)不使用var创建的隐含全局变量可以删除
这表明隐含全局变量严格来讲并不是真正的变量,而是全局对象的属性,属性可以通过delete操作符删除,但是变量不可以
2 获取全局对象
var global = (function() {
return this;
})
3 单一var模式: 只是用一个var在函数顶部进行变量声明,是一种很有用的模式
使用一个var关键字声明由逗号分开的多个变量,同时初始化变量
var a=1,b=2,sum=a+b,myobject={};
4 "提升": javascript中,只要变量是在同一个范围(同一函数)里, 就视为已经声明,哪怕是在变量声明前就是用,无论在哪里,效果等同于在函数顶部声明。
在每个函数中仅仅使用一个var变量声明,这有助于在一个地方查看所有变量,可以有效防范变量提升导致的错误。
5 HTMLCollection是实时的,动态的,因此使用for循环的时候,最好是将数组的长度缓存起来
for (var i=0, max=myarray.length; i<max; i++ )
逐步减少至0,这样通常更快,同0比较比同数组长度的比较更有效率
6 for-in循环应该用来比较非数组对象,因为他会将原型中的属性也会枚举出来,即对象的全部属性
当遍历对象属性来过滤遇到原型链的属性是,可以使用hasOwnProperty()来判断。他不包含原型链中的属性
- for(var i in man) {
- if(man.hasOwnProperty(i)) {
- man[i]
- }
- }
另一种方法,使用Object.prototype.hasOwnProperty.call(man,i);
7 使用 === !==
8 避免使用eval
9 parseInt,每次使用需要指定进制参数
另一种将字符串转换成数字的办法,Number("08"),这种方法比parseInt快很多,parseInt是解析而不是简单得转换,“08 hello”,出parseInt返回一个数值外,其他方法都会失败并返回“NaN”
【javascript模式】Chapter2: 基本 技巧的更多相关文章
- 初涉JavaScript模式 (2) : 基本技巧
尽量少用全局变量 大量使用全局变量会导致的后果 全局变量创建以后会在整个JavaScript应用和Web页面中共享.所有的全局变量都存在于一个全局命名空间内,很容易发生冲突 不知不觉创建了全局变量 其 ...
- ( 译、持续更新 ) JavaScript 上分小技巧(四)
后续如有内容,本篇将会照常更新并排满15个知识点,以下是其他几篇译文的地址: 第一篇地址:( 译.持续更新 ) JavaScript 上分小技巧(一) 第二篇地址:( 译.持续更新 ) JavaScr ...
- ( 译、持续更新 ) JavaScript 上分小技巧(一)
感谢好友破狼提供的这篇好文章,也感谢写这些知识点的作者们和将他们整理到一起的作者.这是github上的一篇文章,在这里本兽也就只做翻译,由于本兽英语水平和编程能力都不咋地,如有不好的地方也请多理解体谅 ...
- javascript之奇淫技巧
最近准备面试,复习一下javascript,整理了一些javascript的奇淫技巧~ //为兼容ie的模拟Object.keys() Object.showkeys = function(obj) ...
- 《javascript模式--by Stoyan Stefanov》书摘--汇总
<javascript模式--by Stoyan Stefanov>书摘--基本技巧 http://www.cnblogs.com/liubei/p/JavascriptModeLog1. ...
- javascript 模式(1)——代码复用
程序的开发离不开代码的复用,通过代码复用可以减少开发和维护成本,在谈及代码复用的时候,会首先想到继承性,但继承并不是解决代码复用的唯一方式,还有其他的复用模式比如对象组合.本节将会讲解多种继承模式以实 ...
- 在Swift中使用JavaScript的方法和技巧
本文作者Nate Cook是一位独立的Web及移动应用开发者,是继Mattt大神之后NSHipster的主要维护者,也是非常知名活跃的Swift博主,并且还是支持自动生成Swift在线文档的Swift ...
- ( 译、持续更新 ) JavaScript 上分小技巧(三)
最近家里杂事较多,自学时间实在少的可怜,所以都在空闲时间看看老外写的内容,学习之外顺便翻译分享~等学习的时间充足些再写写自己的一些学习内容和知识点分析(最近有在接触的:复习(C#,SQL).(学习)T ...
- ( 译、持续更新 ) JavaScript 上分小技巧(二)
考虑到文章过长,不便于阅读,这里分出第二篇,如有后续,每15个知识点分为一篇... 第一篇地址:( 译.持续更新 ) JavaScript 上分小技巧(一) 第三篇地址:( 译.持续更新 ) Java ...
- 【读书笔记】读《JavaScript模式》 - 函数复用模式之现代继承模式
现代继承模式可表述为:其他任何不需要以类的方式考虑得模式. 现代继承方式#1 —— 原型继承之无类继承模式 function object(o) { function F() {}; F.protot ...
随机推荐
- 工作总结:MFC调用Windows自带新建、保存对话框代码
保存: void CExample17Dlg::OnBnClickedSaveButton() { // TODO: Add your control notification handler cod ...
- Java中接口与实例化
一.问题引入 前两天学代理模式的时候想到的,接口可不可以new呢? 接口是特殊的抽象类,接口的方法都默认为 public abstract 的... 抽象的方法不 ...
- JavaScript Maintainable
1. Avoid conflict with Native Variable namespace
- FileUtils
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import ja ...
- 一个Java对象到底占多大内存
最近在读<深入理解Java虚拟机>,对Java对象的内存布局有了进一步的认识,于是脑子里自然而然就有一个很普通的问题,就是一个Java对象到底占用多大内存? 在网上搜到了一篇博客讲的非常好 ...
- Lua I/0输入输出
I/O库为文件操作提供了两种不同的模型,简单模型和完整模型.简单模型假设一个当前输入文件和一个当前输出文件,他的I/O操作均作用于这些文件.完整模型则使用显式的文件句柄,并将所有的操作定义为文件句柄上 ...
- 数据结构(动态树):[国家集训队2012]tree(伍一鸣)
[问题描述] 一棵n个点的树,每个点的初始权值为1.对于这棵树有q个操作,每个操作为以下四种操作之一: + u v c:将u到v的路径上的点的权值都加上自然数c: - u1 v1 u2 v2:将树中原 ...
- 综合查询员工和datetime.now和datetime.today区别
一:综合查询图 二:EmployeeListWindow.cs代码 using System; using System.Collections.Generic; using System.Compo ...
- sql server 删除索引的语句
DROP INDEX index_name ON talbe_nameDROP INDEX IX_TBlueyBook_10 ON 表名
- Theano 在windows下安装
Theano + win8 一切为了 Deep Learning 选择安装方式:AnacondaCE 学术免费 Simply download and execute the installer f ...