JavaScript是一种脚本语言:

  1. 语法类似于常见的高级语言
  2. 脚本语言,不需要编译就可以由解释器直接运行
  3. 变量松散定义
  4. 面向对象

JSON是一种数据交换格式,而JSONP是JSON的一种使用模式,是基于JSON的。简单说JSON是协议,而JSONP是使用这种协议的一种方法。


函数分类

函数声明: function add(a,b){}

函数表达式:

var add=function(a,b){}

(function(){})(); 立即执行函数

return function(){};

var add=function foo(a,b){};

this

全局的this 指向浏览器 this===window

call/apply 修改this指向

add.call(0,5,7)add.apply(0,[10,20])中this指向0

bind与this

bind IE9及以上支持 改变this

bind({a:3}) this指向{a:3}


foo.name 函数名

foo.length 形参个数

arguments.length 实参个数

未传参数失去绑定 foo(a,b,c) foo(1,2) arguments[2]=undefined


原始操作符比函数调用快

A[A.length]=v;好于A.push(v);

var min=a<b?a:b;
return min;

不要在循环内部使用try-catch-finally

不要对数组使用 for in

避免使用with() with()可以把变量加入到全局作用域中

不要使用eval() 或者函数构造器 开销较大

JSON序列化

对象→json JSON.stringify()

JSON反序列化

json→对象 JSON.parse()

jQuery中可以临时存储整个DOM元素 ``` var navleft=document.querySelector('#left');

逗号运算符:先计算左边的参数,再计算右边的参数,返回最右边参数的值


通过for-in循环检查对象的属性,下面用法防止迭代的时候进入到对象的原型属性中

for (var name in object){
if(Object.hasOwnProperty(name)){
//do sth
}
}

toFixed把number四舍五入为指定小数位数的数字 num.toFixed()

注意:toFixed()返回的是字符串不是数字

使用length属性清空数组、截断数组

arr.lenght=0;arr.length=4;

不要直接从数组中delete或remove元素。直接使用delete其实并没有删除,只是将元素置为undefined。数组元素删除应使用splice.删除对象的属性可以使用delete.

获取数组中的最大值和最小值

var numbers=[];
var max=Math.max.apply(Math,numbers);
var min=Math.min.apply(Math,numbers);

验证是否为数组

function isArray(obj){
return Object.prototype.toString.call(obj)==='[object Array]';
}

若toString()被重写过,就行不通了。

验证是否为数字

function isNumber(n){
return !isNaN(parseFloat(n))&&isFinite(n);
}

对象转换为数组

var argArray=Array.prototype.slice.call(arguments);

能将具有length属性的对象转换为数组

var a={length:3,0:'abc',1:'def',2:'ghi'};
console.log(Array.prototype.slice.call(a));//['abc','def','ghi']
function toArr(obj){
var arr=[];
for(item in obj){
arr.push(obj[item]);
}
return arr;
}
toArr(obj);

数组之间追加

Array.prototye.push.apply(array1,array2);

字符串去空格

String.prototype.trim=function(){
return this.replace(/(^\s*)|(\s*$)/g,"");
}

或者$.trim(str);

只有function(){}内新声明的才能是局部变量,while{}、if{}、for{}之内的都是全局变量(除非本身包含在function内)

函数声明优于变量声明。如果函数名和变量名相同,函数声明就能覆盖变量声明。

给基本数据类型添加属性不报错,但取值时是undefined。

使用push()来合并数组

var arr1=[1,2,3],arr2=[4,5,6];
Array.prototype.push.apply(arr1,arr2);
arr1;
//[1,2,3,4,5,6]

闭包

  1. 定义了一个普通函数A
  2. 在A中定义了普通函数B
  3. 在A中返回B(确切的讲在A中返回B的引用)
  4. 执行A(),把A的返回结果赋值给变量C
  5. 执行C()

经典闭包

var lis=document.links;
for (var i=0,length=lis.length;i<length;i++){
(function(i){
lis[i].onclick=function(){
alert(i+1);
}
})(i);
}

JavaScript小技巧总结的更多相关文章

  1. 12个非常实用的JavaScript小技巧

    在这篇文章中将给大家分享12个有关于JavaScript的小技巧.这些小技巧可能在你的实际工作中或许能帮助你解决一些问题. 使用!!操作符转换布尔值 有时候我们需要对一个变量查检其是否存在或者检查值是 ...

  2. 11个不常被提及的JavaScript小技巧

    这次我们主要来分享11个在日常教程中不常被提及的JavaScript小技巧,他们往往在我们的日常工作中经常出现,但是我们又很容易忽略. 1.过滤唯一值 Set类型是在 ES6中新增的,它类似于数组,但 ...

  3. [转]11个教程中不常被提及的JavaScript小技巧

    原文地址: https://www.cnblogs.com/ld1024/p/10723827.html 这次我们主要来分享11个在日常教程中不常被提及的JavaScript小技巧,他们往往在我们的日 ...

  4. 11个教程中不常被提及的JavaScript小技巧

    这次我们主要来分享11个在日常教程中不常被提及的JavaScript小技巧,他们往往在我们的日常工作中经常出现,但是我们又很容易忽略. 1.过滤唯一值 Set类型是在ES6中新增的,它类似于数组,但是 ...

  5. 常用的一些javascript小技巧

    (转载)常用的一些javascript小技巧: http://bbs.blueidea.com/thread-2201069-1-1.html

  6. 12个十分实用的JavaScript小技巧

    12个非常实用的JavaScript小技巧 在这篇文章中将给大家分享12个有关于JavaScript的小技巧.这些小技巧可能在你的实际工作中或许能帮助你解决一些问题. 使用!!操作符转换布尔值 有时候 ...

  7. 12个非常有用的JavaScript小技巧

    在这篇文章中将给大家分享12个有关于JavaScript的小技巧.这些小技巧可能在你的实际工作中或许能帮助你解决一些问题. 使用!!操作符转换布尔值 有时候我们需要对一个变量查检其是否存在或者检查值是 ...

  8. 8个Javascript小技巧

    1. 使用 + 字符可以转换成数字 比如要把一个字符串数字转换成数字,你可能会这样做: var one = '1'; var two = '2'; var numberOne = Number(one ...

  9. 8个Javascript小技巧,让你写的代码有腔调

    如果你想确保你的JavaScript在大多数浏览器和移动设备中都可以工作,那么我从大漠等大神指导,原来可以使用f2etest,也可以使用Endtest,browserstack等 1. 使用 + 字符 ...

  10. javascript小技巧-js小技巧收集(转)

    本文转载自:http://blog.csdn.net/ocean20/article/details/2498699 每一项都是js中的小技巧,但十分的实用! 1.document.write(&qu ...

随机推荐

  1. linux学习1-基础知识

    1.输入一行字跳到行头 ctrl+a:跳到行尾 ctrl+e: 2.一次创建多个文件 touch love_{1..10}_linux.txt touch love_{1,3,5}_linux.txt ...

  2. GeoTrust 企业(OV)型 多域名(SAN/UC)版

     GeoTrust 企业(OV)型 多域名(SAN/UC)版 SSL证书(GeoTrust True BusinessID With Multi-Domain(SAN/UC) ),支持多域名,属于企业 ...

  3. 【Codeforces 1114D】Flood Fill

    [链接] 我是链接,点我呀:) [题意] 你选择一个point作为start_position 然后每次你可以将包含该start_position的所有联通块变成任意颜色 问你最少要多少次变换才能将所 ...

  4. Grails里DOMAIN类的一对一,一对多,多对多关系总结及集成测试

    终于干完这一章节,收获很多啊. 和DJANGO有类似,也有不同. User.groovy: package com.grailsinaction class User { String loginId ...

  5. 【ACM】nyoj_6_喷水装置(1)_201308150853

    喷水装置(一)时间限制:3000 ms  |  内存限制:65535 KB 难度:3描述 现有一块草坪,长为20米,宽为2米,要在横中心线上放置半径为Ri的喷水装置,每个喷水装置的效果都会让以它为中心 ...

  6. M - Substrings

    You are given a number of case-sensitive strings of alphabetic characters, find the largest string X ...

  7. 洛谷 P1491 集合位置

    P1491 集合位置 题目描述 每次有大的活动,大家都要在一起“聚一聚”,不管是去好乐迪,还是避风塘,或者汤姆熊,大家都要玩的痛快.还记得心语和花儿在跳舞机上的激情与释放,还记得草草的投篮技艺是如此的 ...

  8. Skia图片解码模块流程分析

    我在在PPAPI插件中使用Skia画图中说能够在PPAPI插件内使用Skia来画图.这里面会有一个与色彩空间(像素格式)相关的问题.在那篇文章里我们在PPAPI中使用PPB_ImageData创建2D ...

  9. LinkedList,ArrayList末尾插入谁效率高?

    废话不多说,原因不解释.上測试代码: package com.letv.cloud.cdn.jtest; import java.io.IOException; import java.util.Ar ...

  10. 【c语言】字符串替换空格:请实现一个函数,把字符串中的每一个空格替换成“%20”

    // 字符串替换空格:请实现一个函数,把字符串中的每一个空格替换成"%20". // 比如输入"we are happy.",则输出"we%20are ...