//类对象转成数组

var domNodes = Array.prototype.slice.call(document.getElementsByTagName("*"));   var domNodes = Array.prototype.slice.call(arguments);

向下取整:

var a = ~~1.2; //1

这个补充一下,还可以用位右移符>>

var a = 3.4>>0; //3

但是两者最好都只用在正整数上,因为只是舍掉了小数部分。Math.floor(-1.2)应该为-2,这两种方法的结果为-1

转数字

var time = + new Date();

设默认值

function foo(bar){
var foobar = bar || 'default';
//bar 为 undefined, null, "", 0, false, NaN 时最后都得到'default'
} //坑
[]||"aa"; //[]
{}||"aa"; //SyntaxError
({})||"aa";//Object {}

NaN的坑

//NaN - 不是一个数字
isNaN(a);
//检查是不是 "不是一个数字" .. isNaN(null);//false
//实际上是null被转为0了,表面上"null 不是一个 不是数字 的东西"。wtf...

UNICODE 用作变量名

var \u4f60\u597d = "\u4f60\u597d";
var b = {};
b.\u4f60\u597d = \u4f60\u597d;
console.log(b);//Object {你好: "你好"}
console.log(b.你好);// "你好"
console.log(b.\u4f60\u597d);// "你好" console.log("你"==="\u4f60");//true

数组传递和复制

var a = [1,2,3];
var b = a;
delete b[1];
console.log(a);//[1, undefined × 1, 3] var a = [4,5,6];
var b = a.slice(0);
delete b[1];
console.log(a);//[4,5,6]
console.log(b);//[4, undefined × 1,6]

对象与Function

console.log(typeof Function);//"function"
console.log(typeof Object);//"function"

函数声明

aa();
function aa(){return true;} //true bb();
var bb = function(){return true;} //TypeError

toString()

2.toString();//SyntaxError
2 .toString(); //"2"
2..toString(); //"2"
(2).toString(); //"2" [1,[2,"abc","",0,null,undefined,false,NaN],3].toString();
//"1,2,abc,,0,,,false,NaN,3"

for in 暴露原型链属性

Object.prototype.foo = 1;

var obj = new Object();
obj.bar = 1;
for(var p in obj){
console.log(p);//bar,foo 都遍历出来了。可以用hasOwnProperty()过滤原型链属性 }

switch代替if else

 switch (true) {
case (a > 10):
do_something();
break;
case (a < 100):
others();
break;
default:
;
break;
};
 

漂亮的随机码

Math.random().toString(16).substring(2); //14位
Math.random().toString(36).substring(2); //11位
合并数组:
var a = [1,2,3];
var b = [4,5,6];
Array.prototype.push.apply(a, b);
console.log(a); //[1,2,3,4,5,6]
用0补全位数:
function prefixInteger(num, length) {
return (num / Math.pow(10, length)).toFixed(length).substr(2);
}

交换值:
a= [b, b=a][0];
将一个数组插入另一个数组的指定位置:

var a = [1,2,3,7,8,9];
var b = [4,5,6];
var insertIndex = 3;
a.splice.apply(a, Array.concat(insertIndex, 0, b));
// a: 1,2,3,4,5,6,7,8,9
快速取数组最大和最小值

Math.max.apply(Math, [1,2,3]); //3
Math.min.apply(Math, [1,2,3]); //1

条件判断:

var a = b && 1;
//相当于:
if (b) {
a = 1;
}else {
a = b;
} var a = b || 1;
//相当于
if (b) {
a = b;
} else {
a = 1;
}

判断数组:

Object.prototype.toString.call([]) === '[object Array]';

判断IE:

var ie = /*@cc_on !@*/false;

取整:
a = 5.2|0

string转数字
a = +'123'

4. 去除数组中重复的值:

function removeRepeat(arr){
return arr.filter(function(elem, pos) {
return arr.indexOf(elem) == pos;
});
} var arr = new Array("1","2","3","4","4","4","4","5");
var newArr = removeRepeat(arr);
console.log(newArr); //1,2,3,4,5
function sum(arr){ return arr.reduce(function(s,n){ return s+n }); } var arr = new Array(1,2,3,4); console.log(sum(arr)); // 10
6. 寻找数组中的最大数

var  numbers = [5, 458 , 120 , -215 , 228 , 400 , 122205, -85411];
var maxNumber = Math.max.apply(null, numbers);
console.log(maxNumber);

判断是否为数组

 function isArray(arr){ return arr ? Object.prototype.toString.call(arr) === '[object Array]' : false }

转数字

var time = + new Date();

  • false => ![]
  • true => !![]
  • undefined => [][[]]
  • NaN => +[![]]
  • 0 => +[]
  • 1 => +!+[]
  • 2 => !+[]+!+[]
  • 10 => [+!+[]]+[+[]]
  • Array => []
  • Number => +[]
  • String => []+[]
  • Boolean => ![]
  • Function => []["filter"]
  • eval => []["filter"]["constructor"]( CODE )()
  • window => []["filter"]["constructor"]("return this")()

http://www.jsfuck.com/

 

js的常用小技巧的更多相关文章

  1. Matlab常用小技巧及部分快捷键

    Matlab常用小技巧一: 1. m文件如果是函数,保存的文件名最好与函数名一致,这点都很清楚.不过容易疏忽的是,m文件名的命名尽量不要是简单的英文单词,最好是由大小写英文/数字/下划线等组成.原因是 ...

  2. js 数组去重小技巧

    js 数组去重小技巧 Intro 今天遇到一个问题,需要对数据进行去重,想看一下有没有什么比较方便的方法,果然有些收获. Question 问题描述: 我有一个这样的数据: [ { "Pro ...

  3. javascript的40个网页常用小技巧

    下面是javascript的40个网页常用小技巧,对网站开发人员相信会有帮助.1. oncontextmenu="window.event.returnValue=false" 将 ...

  4. js几个小技巧和坑

    蝴蝶书看了,也知道充满了毒瘤和糟粕,但该用还是得用. 实际写了几天,小技巧记录下来.都是在py里有直接答案,不会遇到的问题,没想到js里这么费事. 还是要多读<ES6标准入门> 1判断ob ...

  5. HBase Shell Get 操作常用小技巧

    在工作中,有时候只是想简单看下HBase表某些关键指标的值,这个时候总不能现写Java代码去查看,以下几个小技巧你可能会经常用到. 1. 某行有许多列,只想获取指定2~3列的数据 hbase> ...

  6. 今天整理了几个在使用python进行数据分析的常用小技巧、命令。

    提高Python数据分析速度的八个小技巧 01 使用Pandas Profiling预览数据 这个神器我们在之前的文章中就详细讲过,使用Pandas Profiling可以在进行数据分析之前对数据进行 ...

  7. JS常用小技巧

    iframe子窗口调用父窗口方法 parent.functionName(); 二.iframe 父窗口和子窗口相互的调用方法 1.IE中使用方法: 父窗口调用子窗口:iframe_ID.iframe ...

  8. js开发中常用小技巧

    1.获取指定范围内的随机数 function getRadomNum(min,max){ return Math.floor(Math.random() * (max - min + 1)) + mi ...

  9. Scala的常用小技巧

    1."RichString.java".stripSuffix(".java") == "RichString" "http:// ...

随机推荐

  1. 如何在Windows下开发Python:在cmd下运行Python脚本+如何使用Python Shell(command line模式和GUI模式)+如何使用Python IDE

    http://www.crifan.com/how_to_do_python_development_under_windows_environment/ 本文目的 希望对于,如何在Windows下, ...

  2. 【MFC】Tab Control 控件的使用(转)

    原文转自 http://blog.csdn.net/hustspy1990/article/details/5425365 1.先建立一个对话框MFC应用程序,然后在工具箱里面把Tab Control ...

  3. [原创] 树莓派个人实测 Q&A(最新修改使用windows连接远程桌面)

    原文出处:http://www.eeboard.com/bbs/thread-5191-1-1.html 这篇帖子我打算用Q&A的方式来编写,这样大家更容易一目了然的看明整个帖子的内容,层次分 ...

  4. java的架构流行阶段

    第一阶段:SSM 第二阶段:分布式系统改造,平台化初具规模,各项垂直业务系统搭建上线.产品端极大丰富用户投资.大数据平台研究并使用 第三阶段:SOA治理,使用zookeeper作为注册中心,dubbo ...

  5. API网关服务Zuul-Spring Cloud学习第五天(非原创)

    文章大纲 一.Zuul是什么二.Zuul的基本实现三.路由配置细节四.异常处理细节五.项目源码与参考资料下载六.参考文章   一.Zuul是什么   到目前为止,我们Spring Cloud中的内容已 ...

  6. C#获取程序所在的目录

    有的时候,我们需要读取程序所在目录下的一些文件,最常见的写法是直接通过".\xxx.file"之类的相对路径来获取文件.虽然这种写法大多数的时候能正确工作,但却又一个很大的隐患:程 ...

  7. ios内存管理笔记(一)

  8. EasyMvc入门教程-高级控件说明(20)表格控件

    表单与表格是信息化系统里很常见的控件,EasyMvc提供了简单的数据绑定方式(基于Json),看下面的示例:  准备的接口地址代码如下:(该接口适用以下所有例子) public IActionResu ...

  9. poor-pigs(非常好的思路)

    https://leetcode.com/problems/poor-pigs/ package com.company; class Solution { // 下面第二种做法貌似是OJ原来的做法, ...

  10. 在C#中使用C++编写的类——用托管C++进行封装[转]

    现在在Windows下的应用程序开发,VS.Net占据了绝大多数的份额.因此很多以前搞VC++开发的人都转向用更强大的VS.Net.在这种情况 下,有很多开发人员就面临了如何在C#中使用C++开发好的 ...