这更像是一篇为自己而写的文章,没有过多的解释,sorray。

关于:return

function fn(num){
  var a = num;
  if(a>1){
    a = num + 1;
    return a;
  }else if(a<1){
    a = 0;
    return a;
  }
}

可以写成这样

function fn(num){
  var a = num;
  if(a>1){
    a = num + 1;
  }else if(a<1){
    a = 0;
  }
  return a;
}

利用return替代if..else..

function fn(num){
  if(num==5){
    ...........
    return;
  }
  // 否则语句
  .........
}

利用return跳出多重循环

function fn(){
  for(var i=0;i<10;i++){
    for(var j=0;j<10;j++){
      ............
      if(xx===xx){
        return;
      }
    }
  }
}

利用return this实现链式调用

var Fn = function(dom){this.dom = dom;};
Fn.prototype.click = function(fn){
  this.dom.onclick = function(){
    fn();
  };
  return this;
};

Fn.prototype.mouseover = function(fn){
  this.dom.onmouseover = function(){
    fn();
  };
  return this;
};

var fn = new Fn(box);
fn.click(function(){
  console.log('click');
}).mouseover(function(){
  console.log('mouseover');
})

合理利用 || &&

if(fn()!=='undefined'){
  .........
}

可以这样

fn()&&要执行的代码

如果需要在&&或者||中使用赋值语句需要加()

return fn() && (a = 10);

利用||替程序实现默认值

var a = name || '追梦子';

function相关性...

参数较多的情况下使用透明参数(使用对象)

function fn(obj){
  for(var k in obj){
    ..............
  }
}

fn({a:1,b:2,c:3,d:4,e:5})

-------------------------

减少函数参数,如果内部可以计算出的话。

利用函数解决变量污染问题

(function(){
  // 代码块
}())

利用函数创建私有变量

var fn = (function(){
  var name = 'xxx';
  return function(){
    .............
  };
}());

利用闭包保存上下文

for(var i=0;i<10;i++){
  (function(i){
    lis[i].onclick = function(){
      ..........
    };
  }(i))
}

合理利用apply

var arr = [2,3];
function add(a,b){
  console.log(a + b);
}

add.apply(null,arr); //5

关于:for

简写1:

var arr = [2,3,4,5];

for(var i=-1;(arr.length-1)>i++;){
  console.log(arr[i]);
}

var arr = [2,3,4,5];
var i = -1;

for(;(arr.length-1)>i++;){
  console.log(arr[i]);
}

简写2:

var arr = [2,3,4,5];

for(var i=0,c;c=arr[i++];){
  console.log(c);
}

空白

var that = this; // 可以这样

varthat = this; // 不可以这样

varthat本身就会被当成是一个变量,没有人会知道你这是在声明一个变量,就好象如果你想要使用varthat而不是声明一样。

数字

javascript没有区分数字类型所以“ 1 和 1.0 ” 是一样的。

对象属性

在低版本浏览器中对象属性如果是保留字或者关键字必须加引号,不然会报错,并且使用的时候也必须通过[]来访问这个属性,在高版本浏览器中已经不存在这个问题。

数组

javascript并没有提供真正的数组而是通过对象提供了一种类似数组的结构。因此数组在大部分情况下和对象非常相似。

因为数组也是对象我们也可以使用for in来遍历数组

var arr = [2,3];

for(var k in arr){
  console.log(k,arr[k]);
}

数组有一个length属性,这个length只包含数字,如果是其他的这个长度是不会包含进来的。比如:

var arr = [2,3];

arr.fn = function(){};

这个fn是不会包含在length里面的

只能这样

var arr = [2,3];
arr[5] = 10;

console.log(arr.length);

因此对象没有length属性也很正常。但是也说了数组就是对象,所以我们想让对象也实现数组的一些特性也是很正常不过的。

因为设计的原因数组的类型也是Object所有给了我们不少小麻烦,不过我们可以自己实现一个。

通过length = 0可以用来清空数组。

javascript技术大全的更多相关文章

  1. javascript开源大全

    javascript开源大全 Ajax框架-jQuery 可视化HTML编辑器-CKEditor 国产jQuery-UI框架-(jUI)-DWZ 网页开发FireFox插件-Firebug 服务器端的 ...

  2. 【JS】javascript 正则表达式 大全 总结

    javascript 正则表达式 大全 总结 参考整理了一些javascript正则表达式 目的一:自我复习归纳总结 目的二:共享方便大家搜索 微信:wixf150 验证数字:^[0-9]*$ 验证n ...

  3. JavaScript资源大全中文版(Awesome最新版--转载自张果老师博客)

    JavaScript资源大全中文版(Awesome最新版)   目录 前端MVC 框架和库 包管理器 加载器 打包工具 测试框架 框架 断言 覆盖率 运行器 QA 工具 基于 Node 的 CMS 框 ...

  4. 细数Javascript技术栈中的四种依赖注入

    作为面向对象编程中实现控制反转(Inversion of Control,下文称IoC)最常见的技术手段之一,依赖注入(Dependency Injection,下文称DI)可谓在OOP编程中大行其道 ...

  5. javascript函数大全

    JavaScript函数大全 1.document.write(""); 输出语句2.JS中的注释为//3.传统的HTML文档顺序是:document->html->( ...

  6. 第61节:Java中的DOM和Javascript技术

    Java中的DOM和Javascript技术 DOM是一门技术,是文档对象模型.所需的文档只有标记型文档,如我们所学的html文档(文档中的所有标签都封装成为对象了) DOM: 为Document O ...

  7. 能说明你的Javascript技术很烂的五个原因

    Javascript在互联网上名声很臭,但你又很难再找到一个像它这样如此动态.如此被广泛使用.如此根植于我们的生活中的另外一种语言.它的低学习门槛让很多人都称它为学前脚本语言,它另外一个让人嘲笑的东西 ...

  8. JavaScript 资源大全中文版

    我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-javascript 是 sorrycc 发起维护的 JS 资源列表,内容包括:包管理器.加 ...

  9. JFreeChart生成饼形图(3) (转自 JSP开发技术大全)

    JFreeChart生成饼形图(3) (转自 JSP开发技术大全) 14.3 利用JFreeChart生成饼形图 通过JFreeChart插件,即可以生成普通效果的饼形图,也可以生成3D效果的饼形图: ...

随机推荐

  1. javascript练习-私有状态

    在经典的面向对象编程中,经常需要将对象的某个状态封装或隐藏在对象内,只有通过对象的方法才能访问这些状态,对外只暴露一些重要的状态可以直接编写.这是就需要私有状态. function Range(fro ...

  2. 剑指offer算法_位运算求和

    不用+,-,*,/运算求和,可以分成三步: 1.计算两个数字的异或值,相当于只计算每一位的和,不计算进位,得出结果sum: 2.计算两个数字的与值,相当于求出两个数字的进位,然后左移一位,相当于进位, ...

  3. java基础5_数组

    一 数组是一个多个相同数据的集合.数组的长度一旦定义,将不能改变.数组的下标是从0开始的,到数组的长度-1结束. 1.数组的声明,初始化 int[] a = new int[3]{1,2,3}; in ...

  4. 从头安装及配置PL/SQL Developer

    原文地址:http://lightguide.blog.51cto.com/3121539/1140588 因为自己安装及配置中走了不少弯路,搜索网上的文档大部分没有包含oralce client的安 ...

  5. java中对List<Map<String,Object>>中的中文汉字排序

    import java.text.Collator;import java.util.ArrayList;import java.util.Collections;import java.util.C ...

  6. CentOS7(mini) 急速部署ASP.NET应用

    从mono 2.8+的时候就开始关注linux运行.NET的一些消息 最近闲来无事,发现mono官方已经提供有编译好的源,极大便利了部署过程,不需要自己去编译mono了 用Nancy.Owin写了一个 ...

  7. node(规则引擎)

    本文主要记录node的下的一个开源规则引擎nools,给出简单的实例,github地址为: https://github.com/C2FO/nools 定义规则引擎(test.nools) defin ...

  8. C#中的线程一(委托中的异步)

    C#中的线程一(委托中的异步) 一.同步委托 我们平时所用的委托以同步居多,我们编写一个方法和相关委托进行演示: publicdelegatevoid DoSomethingDelegate(stri ...

  9. 接口分离原则(Interface Segregation Principle)

    接口分离原则(Interface Segregation Principle)用于处理胖接口(fat interface)所带来的问题.如果类的接口定义暴露了过多的行为,则说明这个类的接口定义内聚程度 ...

  10. C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻

    前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...