[摘要]随着前端市场日新月异的发展,现在的市场需要人才掌握的技能越多越多,今天就给大家总结一些原生js闭包,继承,原型链,node,希望能对你的前端道路上有所帮助以下是个人总结,也有一些是copy大神的,现...
随着前端市场日新月异的发展,现在的市场需要人才掌握的技能越多越多,今天就给大家总结一些原生js闭包,继承,原型链,node,希望能对你的前端道路上有所帮助
以下是个人总结,也有一些是copy大神的,现在放到一起,方便以后查阅(有不对的地方,还望大家能够提出,我会尽快加以改正)。
一、!!强制转布尔值boolean
根据当前需要判断的值是真值还是假值来判断,真值返回true,假肢返回false,那么这样的话,除了假值,剩下的也都是真值了。
假值有: 0 、 “” 、 null 、 undefined 、 false 、NaN、
除了这 6 个外,其它均为“真” ,包括对象、数组、正则、函数等。
注意: '0'、'null'、'false'、{}、[]也都是真值 。
那么下面我们来看看!!是如何转布尔值的。
例如:
首先我们声明3个变量,x为null,y为空字符串,str为字符串,下面看看他们添加了"!!"后会有什么结果。
var x=null; var y=""; var str="abcd"; console.log(!!x) // false; console.log(!!y) // false; console.log(!!str) // true;
如上所说,假值返回false,真值返回true。
二、在str前添加一个?号,+str会强制转Number
将字符串前加+,可以强制转number,下面我们就一起来试试吧!
var str="88"; console.log(+str) // 88 //但是如果是混合类型的字符串,则会转为NaN var b="1606e"; console.log(+b) // NaN
三、不可靠的undefined 可靠的void 0
在JavaScript中,假设我们想判断一个是否是 undefined,那么我们通常会这样写:
if(a === undefined){ dosomething..... }
因为在javascript中,undefined是不可靠的
例如:
当undefined被放在在function函数内,我们把它当成一个局部变量,它是可以赋上值的,下面我们来试试。
function foo2(){ var undefined=1; console.log(undefined) } foo2(); // 1;
但是当在函数内定义一个全局变量,并不能给赋上值
var undefined; function foo2(){ undefined=1; console.log(undefined) } foo2() // undefined
那么我们试试用void 0或者 void (0)来代替:
先声明一个变量a,赋值为undefined,接下来我们用void 0来判断一下。
var a=undefined; //用void 0来判断一下 if(a===void 0){ console.log('true') } // true //再用void (0)来判断一下 if(a===void (0)){ console.log('true') } // true //最后我们打印一下这两个的返回值 console.log(void 0,void (0)) // undefined undefined
我们现在可以通过void 0 运算来获得 undefined;那在以后需要判断值为undefined的时候,可以直接用void 0或者void (0),而且这两个值的直接返回值就是undefined,所以说非常可靠哦!
四、字符串也是有length属性的!
我们知道所有的Array都是有length属性的,就算是空数组,那么length 为0,那么字符串有没有呢?接下来我们来验证一下。
var str="sdfsd5565s6dfsd65sd6+d5fd5"; console.log(str.length) // 26
结果是有的,所以我们在判断类型时,不能单纯拿有没有length属性来判断是不是数组了,我们可以用下面的方法来判断是否是数组:
var obj=[1,2] ; console.log(toString.call(obj) === '[object Array]');
五、如何创建一个随机数组,或者将已有的数组打乱?
在项目中有时候我们需要一个随机打乱的数组,那么下面我们来实现以下:
先来创建一个数组:
var arr=[]; for(var i=0;i<10;i++){ arr.push(i) } console.log(arr) // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
接下来我们来打乱它:
arr.sort(()=>{ return Math.random() - 0.5 }) // [1, 0, 2, 3, 4, 6, 8, 5, 7, 9]
第二种打乱方法:
arr.sort((a,b)=>{ return a>Math.random()*10; }) // [1, 2, 0, 6, 4, 3, 8, 9, 7, 5]
我们以前的正常排序是这样的:
arr.sort(function(a,b){ return b-a });
解析:
先说正常的排序:
a,b表示数组中的任意两个元素,若return > 0 ,b前a后;若reutrn < 0 则a前b后;当a=b时,则存在浏览器兼容 ;
a-b输出从小到大排序,b-a输出从大到小排序。
然后再说我们打乱的方法:
创建数组不用说,接下来就是用js的sort方法 来实现,Math.random()实现一个随机0-1之间的小数 然后再减去0.5,这时就会根据return比较后得到的值排序,所以说就会生成不是正常从大到小或者从小到大的排序。
第二个打乱的方法同样是遵循sort的方法,将a,b传进去 然后和随机数做比较,关于比较的方法不太清楚。
六、去除前后、前、后 所有空格
这是专门为去除空格写的一套方法,适用于各种情况,所有空格,前后空格,前空格,后空格。
var strr=" 1 ad dertasdf sdfASDFDF DFG SDFG " // type 1-所有空格,2-前后空格,3-前空格,4-后空格function trim(str,type){ switch (type){ case 1:return str.replace(/\s+/g,""); case 2:return str.replace(/(^\s*)
关键词:原生js的常用办法整理