JavaScript小技巧总结
JavaScript是一种脚本语言:
- 语法类似于常见的高级语言
- 脚本语言,不需要编译就可以由解释器直接运行
- 变量松散定义
- 面向对象
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]
闭包
- 定义了一个普通函数A
- 在A中定义了普通函数B
- 在A中返回B(确切的讲在A中返回B的引用)
- 执行A(),把A的返回结果赋值给变量C
- 执行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小技巧总结的更多相关文章
- 12个非常实用的JavaScript小技巧
在这篇文章中将给大家分享12个有关于JavaScript的小技巧.这些小技巧可能在你的实际工作中或许能帮助你解决一些问题. 使用!!操作符转换布尔值 有时候我们需要对一个变量查检其是否存在或者检查值是 ...
- 11个不常被提及的JavaScript小技巧
这次我们主要来分享11个在日常教程中不常被提及的JavaScript小技巧,他们往往在我们的日常工作中经常出现,但是我们又很容易忽略. 1.过滤唯一值 Set类型是在 ES6中新增的,它类似于数组,但 ...
- [转]11个教程中不常被提及的JavaScript小技巧
原文地址: https://www.cnblogs.com/ld1024/p/10723827.html 这次我们主要来分享11个在日常教程中不常被提及的JavaScript小技巧,他们往往在我们的日 ...
- 11个教程中不常被提及的JavaScript小技巧
这次我们主要来分享11个在日常教程中不常被提及的JavaScript小技巧,他们往往在我们的日常工作中经常出现,但是我们又很容易忽略. 1.过滤唯一值 Set类型是在ES6中新增的,它类似于数组,但是 ...
- 常用的一些javascript小技巧
(转载)常用的一些javascript小技巧: http://bbs.blueidea.com/thread-2201069-1-1.html
- 12个十分实用的JavaScript小技巧
12个非常实用的JavaScript小技巧 在这篇文章中将给大家分享12个有关于JavaScript的小技巧.这些小技巧可能在你的实际工作中或许能帮助你解决一些问题. 使用!!操作符转换布尔值 有时候 ...
- 12个非常有用的JavaScript小技巧
在这篇文章中将给大家分享12个有关于JavaScript的小技巧.这些小技巧可能在你的实际工作中或许能帮助你解决一些问题. 使用!!操作符转换布尔值 有时候我们需要对一个变量查检其是否存在或者检查值是 ...
- 8个Javascript小技巧
1. 使用 + 字符可以转换成数字 比如要把一个字符串数字转换成数字,你可能会这样做: var one = '1'; var two = '2'; var numberOne = Number(one ...
- 8个Javascript小技巧,让你写的代码有腔调
如果你想确保你的JavaScript在大多数浏览器和移动设备中都可以工作,那么我从大漠等大神指导,原来可以使用f2etest,也可以使用Endtest,browserstack等 1. 使用 + 字符 ...
- javascript小技巧-js小技巧收集(转)
本文转载自:http://blog.csdn.net/ocean20/article/details/2498699 每一项都是js中的小技巧,但十分的实用! 1.document.write(&qu ...
随机推荐
- C#反射获取数据库字段
static string sqlselect = "insert into {0}({1}) values ({2})"; (这个方法可以适用于任何数据库的插入语句) publi ...
- selenium动作链
简介 一般来说我们与页面的交互可以使用Webelement的方法来进行点击等操作. 但是,有时候我们需要一些更复杂的动作,类似于拖动,双击,长按等等. 这时候就需要用到我们的Action Chains ...
- 【Codeforces 429B】Working out
[链接] 我是链接,点我呀:) [题意] 两个人,一个人在左上角,一个人在左下角. 左上角要到右下角去 左下角要到右上角去 只能走到相邻的格子(不能往回走,即一个往右下,一个往右上走) 要求这两个人必 ...
- 【MariaDB】MariaDB vs MySQL - 特性
原文链接: https://mariadb.com/kb/en/mariadb-vs-mysql-features/ xiaomo译------ 支持更多的存储引擎 除了标配的MyISAM, BLAC ...
- 51nod——T1267 4个数和为0
https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1267 题目描述 给出N个整数,你来判断一下是否能够选出4个数,他们的和 ...
- Zepto Code Rush 2014-A. Feed with Candy(HACK)
A. Feed with Candy time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- buaa 1033 Easy Problem(三分)(简单)
Easy Problem 时间限制:1000 ms | 内存限制:65536 KB 描写叙述 In this problem, you're to calculate the distance b ...
- springboot + rabbitmq 整合示例
几个概念说明:Broker:简单来说就是消息队列服务器实体.Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列.Queue:消息队列载体,每个消息都会被投入到一个或多个队列.Bindi ...
- GDI+学习之------色彩与图像
色彩 在GDI+中.色彩是通过Color类来描写叙述的.不是用RGB类.用RGB构造会出错.GDI+中的色彩信息值是由一个32位的数据来表示的,它包含8位alpha值和各8位的R.G.B值,对于alp ...
- Java命名规则详细总结
Class名应是首字母大写的名词.命名时应该使其简洁而又具有描述性.异常类的命名,应以Exception结尾.Interface的命名规则与Class相同 1. JAVA源文件的命名 JAVA源文件名 ...