JavaScript技巧
使用!!
将变量转换成布尔类型。它能自动将任何类型的数据转换成布尔值,只有0,null,"",undifined
和NaN
为false,其他都是true。
使用+
号将变量转换成数字。只适用于数字字符串和date
,date返回时间戳。
使用||
设置默认值。ES6有了默认值这个功能,在ES3,5中可以用||
设置。
javascript
function User(name,age){
this.name = name || "wlk",
this.age = age || 24
}
Array.prototype.slice(begin,end)
裁剪数组。
javascript
let array = [1,2,3,4,5]
console.log(array.slice(-1));//[5]
console.log(array.slice(-3));//[3,4,5]
array.length
截断数组。
javascript
let array = [1,2,3,4,5];
array.length = 3
console.log(array);//[1,2,3]
合并两个数组。
javascript
let arr1 = [1,2,3];
let arr2 = [4,5,6];
arr1.push.apply(arr1,arr2);//arr1:[1,2,3,4,5,6],arr2:[4,5,6]
arr3 = arr1.concat(arr2);//arr3:[1,2,3,4,5,6]。不改变原数组
打乱数组元素顺序。
javascript
let list = [1,2,3,4,5]
list.sort(()=>Math.random()-0.5)
console.log()
打印有样式的文本。(浏览器中才行)
javascript
var a = 'hello';
console.log('%c'+a,'font-size:400%;background:blue;color:white;');
只有以下这些是假值,其他都是真值。
false
undefined
null
0
NaN
- 空字符串(
""
)
JavaScript函数调用自身的三种方式:
- 函数名
- arguments.callee
- 作用域下的一个指向该函数的变量名(函数表达式)
数字原型上的一些方法:(123.toFixed(2)会报错,需要变量转存)
javascript
number.toFixed()
number.toPrecision()
枚举一个对象的属性:
- for...in 循环 该方法依次访问一个对象及其原型链中所有可枚举的属性。
- Object.keys(o) 该方法返回
o
对象 自身包含(不包括原型中)的所有属性的名称的数组。 - Object.getOwnPropertyNames(o) 该方法返回一个数组,它包含了对象
o
所有拥有的属性(无论是否可枚举)的名称。
JavaScript的数据类型:(复习JavaScript的思路)
setTimeout()的参数可以不止两个。
javascript
setTimeout(function(name,age){
console.log(name,age);
},2000,"wlk",25)
// 传入多个参数,第三个往后的参数作为回调函数的参数
闭包是由函数以及创建该函数的词法作用域组合而成的。这个词法作用域包括闭包创建时所能访问的所有局部变量
对象的属性名是只能是字符串,不是字符串的话,会默认转换成字符串。如下:
javascript
var obj = {123:"www","123":"wlk"}
//现在obj只有一个属性“123”,上面两个属性是一样的,后面会覆盖前面的。
arr.toString()===>[12,23]--->"12,23"
obj.toString()===>obj={name;"wlk"}--->"[object Object]"
正则表达式匹配一个汉字字符
JavaScript
//JavaScript中仍可使用[\u4e00-\u9fa5],但在sublime和notepad++中,需要使用[\x{4e00}-\x{9fa5}]。
//日常使用中一定要测试一下,现在正则匹配中文汉字是使用的20年前的技术,不一定准确了,特别是其他语言中。
~~
符的用途:两次按位取反。相当于Matn.floor(),~~
效率更高。
生成两个值之间的随机数
javascript
Math.floor(Math.random()*(max-min))+min;
IndexedDB
是一个浏览器中使用的数据库,类似于local Storage
,存储容量更大。Dexie是一个对IndexedDB
进行了封装的库。