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()来判断。他不包含原型链中的属性

  1. for(var i in man) {
  2. if(man.hasOwnProperty(i)) {
  3. man[i]
  4. }
  5. }

另一种方法,使用Object.prototype.hasOwnProperty.call(man,i);

7 使用 === !==

8 避免使用eval

9 parseInt,每次使用需要指定进制参数
   另一种将字符串转换成数字的办法,Number("08"),这种方法比parseInt快很多,parseInt是解析而不是简单得转换,“08 hello”,出parseInt返回一个数值外,其他方法都会失败并返回“NaN”

【javascript模式】Chapter2: 基本 技巧的更多相关文章

  1. 初涉JavaScript模式 (2) : 基本技巧

    尽量少用全局变量 大量使用全局变量会导致的后果 全局变量创建以后会在整个JavaScript应用和Web页面中共享.所有的全局变量都存在于一个全局命名空间内,很容易发生冲突 不知不觉创建了全局变量 其 ...

  2. ( 译、持续更新 ) JavaScript 上分小技巧(四)

    后续如有内容,本篇将会照常更新并排满15个知识点,以下是其他几篇译文的地址: 第一篇地址:( 译.持续更新 ) JavaScript 上分小技巧(一) 第二篇地址:( 译.持续更新 ) JavaScr ...

  3. ( 译、持续更新 ) JavaScript 上分小技巧(一)

    感谢好友破狼提供的这篇好文章,也感谢写这些知识点的作者们和将他们整理到一起的作者.这是github上的一篇文章,在这里本兽也就只做翻译,由于本兽英语水平和编程能力都不咋地,如有不好的地方也请多理解体谅 ...

  4. javascript之奇淫技巧

    最近准备面试,复习一下javascript,整理了一些javascript的奇淫技巧~ //为兼容ie的模拟Object.keys() Object.showkeys = function(obj) ...

  5. 《javascript模式--by Stoyan Stefanov》书摘--汇总

    <javascript模式--by Stoyan Stefanov>书摘--基本技巧 http://www.cnblogs.com/liubei/p/JavascriptModeLog1. ...

  6. javascript 模式(1)——代码复用

    程序的开发离不开代码的复用,通过代码复用可以减少开发和维护成本,在谈及代码复用的时候,会首先想到继承性,但继承并不是解决代码复用的唯一方式,还有其他的复用模式比如对象组合.本节将会讲解多种继承模式以实 ...

  7. 在Swift中使用JavaScript的方法和技巧

    本文作者Nate Cook是一位独立的Web及移动应用开发者,是继Mattt大神之后NSHipster的主要维护者,也是非常知名活跃的Swift博主,并且还是支持自动生成Swift在线文档的Swift ...

  8. ( 译、持续更新 ) JavaScript 上分小技巧(三)

    最近家里杂事较多,自学时间实在少的可怜,所以都在空闲时间看看老外写的内容,学习之外顺便翻译分享~等学习的时间充足些再写写自己的一些学习内容和知识点分析(最近有在接触的:复习(C#,SQL).(学习)T ...

  9. ( 译、持续更新 ) JavaScript 上分小技巧(二)

    考虑到文章过长,不便于阅读,这里分出第二篇,如有后续,每15个知识点分为一篇... 第一篇地址:( 译.持续更新 ) JavaScript 上分小技巧(一) 第三篇地址:( 译.持续更新 ) Java ...

  10. 【读书笔记】读《JavaScript模式》 - 函数复用模式之现代继承模式

    现代继承模式可表述为:其他任何不需要以类的方式考虑得模式. 现代继承方式#1 —— 原型继承之无类继承模式 function object(o) { function F() {}; F.protot ...

随机推荐

  1. 工作总结:MFC调用Windows自带新建、保存对话框代码

    保存: void CExample17Dlg::OnBnClickedSaveButton() { // TODO: Add your control notification handler cod ...

  2. Java中接口与实例化

    一.问题引入         前两天学代理模式的时候想到的,接口可不可以new呢?         接口是特殊的抽象类,接口的方法都默认为  public  abstract  的... 抽象的方法不 ...

  3. JavaScript Maintainable

    1. Avoid conflict with Native Variable namespace

  4. FileUtils

    import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import ja ...

  5. 一个Java对象到底占多大内存

    最近在读<深入理解Java虚拟机>,对Java对象的内存布局有了进一步的认识,于是脑子里自然而然就有一个很普通的问题,就是一个Java对象到底占用多大内存? 在网上搜到了一篇博客讲的非常好 ...

  6. Lua I/0输入输出

    I/O库为文件操作提供了两种不同的模型,简单模型和完整模型.简单模型假设一个当前输入文件和一个当前输出文件,他的I/O操作均作用于这些文件.完整模型则使用显式的文件句柄,并将所有的操作定义为文件句柄上 ...

  7. 数据结构(动态树):[国家集训队2012]tree(伍一鸣)

    [问题描述] 一棵n个点的树,每个点的初始权值为1.对于这棵树有q个操作,每个操作为以下四种操作之一: + u v c:将u到v的路径上的点的权值都加上自然数c: - u1 v1 u2 v2:将树中原 ...

  8. 综合查询员工和datetime.now和datetime.today区别

    一:综合查询图 二:EmployeeListWindow.cs代码 using System; using System.Collections.Generic; using System.Compo ...

  9. sql server 删除索引的语句

    DROP INDEX index_name ON talbe_nameDROP INDEX IX_TBlueyBook_10 ON 表名

  10. Theano 在windows下安装

    Theano + win8 一切为了 Deep Learning 选择安装方式:AnacondaCE  学术免费 Simply download and execute the installer f ...