本文只收集在学习Vue.js的过程中遇到的基础JavaScript语法问题。
重点收集JavaScript与其他语言不同的地方,以及最常用的地方。
标识符
标识符第一个字符可以是字母、下划线(_)、美元符($)
例如,var $temp = {}; 不要觉得奇怪,只是定义了一个非常普通的变量$temp而已。 2018-11-04
相等于不相等
== != 这两个操作符在比较之前会先将不相同的类型转换成相同的类型再比较。
=== !== 这两个操作符不会在比较之前做类型转换
值类型与引用类型
值类型是指基本类型:Undefined Null Boolean Number String
引用类型:对象类型
动态属性
对象的属性是动态的,可以随时添加属性,删除属性,添加属性的时候还可以指定这个属性将来是否可以被删除,是否可以写等等。
数据类型与拷贝
基本数据类型与引用数据类型 浅拷贝与深拷贝
https://www.cnblogs.com/dinghuihua/p/6674719.html 2018-10-26
数组
1 push和pop
push()
向Array
的末尾添加若干元素,pop()
则把Array
的最后一个元素删除掉:
var arr = [1, 2];
arr.push('A', 'B'); // 返回Array新的长度: 4
arr; // [1, 2, 'A', 'B']
arr.pop(); // pop()返回'B'
arr.slice(start, end=end) 返回一下新数组,不改变原有数组
arr.splice(index,howmany,item1,.....,itemx) 会改变原数组。从index开始删除howmany个元素,并用item1,....,itemx插入覆盖。如果howmany为0则不删除,只插入
arr.reverse() 颠倒数组中元素的次序,会改变原来的数组
迭代数组:
arr.filter(function(item,index,array){}) //item为遍历到的当前项,index为项的索引下标,一般只使用第一个参数返回一个新数组。
arr.map(function(item,index,array){}) //同filter,每个元素都作用在函数上,并将所有结果作为一个新数组返回。
arr.forEach(function(item,index,array){})//迭代数组的每个元素
归并
arr.reduce(function(prev, cur, index,array){}) //类似C++中的transform,将所有项作用的结果依次往后传递给下一次迭代。适合求和。
箭头函数
x => x * x
上面的箭头函数相当于:
function (x) {
return x * x;
}
var fun = x => x * x;
let
let是块作用域的,var是函数和全局作用域的,新标准提倡使用let来替换var.
模板占位符
本质上是字符串,但是允许插入${表达式},可以将表达式的值转成字符串
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/template_strings
export const getUserListPage = params => { return axios.get(`${base}/user/listpage`, { params: params }); };
then
执行当时可能并不一定完成,但是只要执行完成了就会到then里面执行。
var promise1 = new Promise(function(resolve, reject) {
resolve('Success!');
});
p.then(onFulfilled[, onRejected]);
p.then((value) => {
// fulfillment
}, (reason) => {
// rejection
});
JavaScript浮点数精度
http://www.css88.com/archives/7324
function fmoney(s, n) {
/*
* 参数说明:
* s:要格式化的数字
* n:保留几位小数
* */
n = n > 0 && n <= 20 ? n : 2;
s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed(n) + "";
var l = s.split(".")[0].split("").reverse(),
r = s.split(".")[1];
t = "";
for (i = 0; i < l.length; i++) {
t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");
}
return t.split("").reverse().join("") + "." + r;
}
//调用
fmoney(9.7,2);//9.70
fmoney('12345.675910', 3);//12,345.676