注释 单行 多行
严格模式
use strict
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Strict_mode
http://www.runoob.com/js/js-strict.html
数据类型 6种类型
5简单类型 Undefined Null Boolean Number String
1复杂类型 Object 本质上有一组无序的名值对组成
typeof操作符
1、undefined null boolean number string object function
实例
let abc = [];
const add = (a,b)=>a+b;
console.log('typeof abc=',typeof abc);
console.log('typeof 98=',typeof 98);
console.log('typeof 98.8',typeof 98.8);
console.log('typeof null=',typeof null);
console.log('typeof ddd=',typeof ddd);
console.log('typeof {}=',typeof {});
console.log('typeof add = ',typeof add);
2、异常现象 array null
http://www.cnblogs.com/xiaoheimiaoer/p/4572558.html
实例
const isArray = abc && typeof abc === 'object' && abc.constructor === Array;
console.log(abc.constructor);
console.log(isArray);
console.log('Array.isArray ',Array.isArray(abc));
console.log(abc instanceof Array);
const aaa = null;
console.log('aaa === null ',aaa === null);
## null undefined
undefined 派生自null值,es5相等
console.log(undefined == null);
console.log(undefined === null);
Boolean
javascript 假值
0 Number
NaN Number
'' String
null object
undefined Undefined
false Boolean
Number
1、浮动点数
注意:1)不要测试某个特定的浮点数
console.log(0.1);
console.log(0.2);
console.log(0.1+0.2);
console.log(0.1+0.2 === 0.3);
2、数值范围
自己动手测试数值范围,无穷大,无穷小
3、NaN
非数值(not a number) 是一个特殊的数值。
判断是否是非数值 isNaN 函数
4、数值转换
1)Number()
参数类型,任何类型
自己看,规则比较多。
2)parseInt()
第一个参数类型是string,
第二个参数 2,8,10,16
- parseFloat()
参数类型是string
5)toFixed() toExponential() e表示法
String 自己看
Object 后面有更详细的介绍
操作符
== === Object.is()
<img src="http://newimg88.b0.upaiyun.com/newimg88/2017/08/pCyqkLc.png" />
第五章
函数
理解:
1、函数就是对象
对象:“名/值“对的集合并拥有一个连接到原型对象的隐藏连接
对象字面量产生的对象连接到Object.prototype.
2、函数对象连接到Function.prototype(该原型对象本身连接到Object.prototype).
3、每个函数在创建时会附加连个隐藏属性:函数的上下文和实现函数行为的代码。
4、函数总会有一个返回值,如果没有返回值,返回undefined
5、参数 arguments 创建免费赠送
不是数组,它是一个“类似数组(array-like)”
拥有length属性,但没有任何数组方法
6、调用
1)方法调用
let value = 4;
const myObj = {
value:0,
add:function(a){
this.value += typeof a === 'number' ? a :1;
}
}
myObj.add(2);
console.log(myObj.value);
方法可以使用this访问自己所属的对象
2)函数调用模式
function add(a,b) {
return a+b;
}
console.log(add(3,4));
3)构造器调用模式
var Quo = function (string) {
this.state = string;
}
Quo.prototype.get_state = function() {
return this.state;
}
var myQuo = new Quo("ok");
console.log(myQuo.get_state())
4)Apply,call调用模式
javascript 函数式面向对象编程语言
var Quo = function () {};
Quo.prototype.get_state = function() {
return this.state;
}
var states = {
state:'ok'
};
const state = Quo.prototype.get_state.apply(states);
console.log(state);
call 方法从犀牛书中寻找
7、函数没有重载
日期
对象的理解
1、对象字面量
属性名可以用引号括住,也可以不括住,如果是关键词,必须括住。
var obj = {
id:1,
}
var obj2 = {
"int":1
}
2、对象字面量的检索
1).表示法
2)[]里面是属性名的字符串
例如
console.log(Math.max(2,3,1,19,2));
console.log(Math["max"](3,1,33,22));
const arr = ['id','name','sex'];
const obj = {};
for(let v of arr){
obj[v] = v;
}
console.log(obj);
3)检索不存在的值 返回 undefined
obj['liang']
const a = obj['liang'] || 'liang';
- 从对象属性是undefined里面继续引用会怎么样?
3、更新
const obj = {};
obj["liang"]='liang';
obj.liang='liang';
4、对象的浅复制
1) for in
2) Object.assign
实例:
const arr = ['id','name','sex'];
const obj = {};
for(let v of arr){
obj[v] = v;
}
console.log(obj);
const obj2 = Object.assign(obj);
obj['clas']='二年级';
console.log(obj2);
- {...obj}
5、删除
delete obj.liang
6、keys() , values() ,entries(), 其它更多方法
const obj = { foo: 'bar', baz: 42 };
const map = new Map(Object.entries(obj));
let obj = { one: 1, two: 2 };
for (let [k, v] of Object.entries(obj)) {
console.log(
`${JSON.stringify(k)}: ${JSON.stringify(v)}`
);
}
数组 Array
1、数组检测
Array.isarray()
instaceof
2、delete 删除
提问?
3、数组的长度
每个数组都有长度 0<=lenth<4294967295
const arr = []; // length=0
const arr[1000]=0; // length=1001
4、常用方法
1)concat
例如:
const a =['a','b','c'];
const b =['d','e','f'];
cosnt c = a.concat(b,'m','n');
能想到什么?
其它?
2)join
a.join(',');
const m = ['a','b','c',['d','e','f']];
m.join(',');
- 栈方法 后进先出
const a =['a','b','c'];
a.push('e'); // 返回什么?
a.pop(); // 返回什么?
4)队列方法 后进后出
a.push('e');
a.shift(); // 返回什么
5)unshift
6)sort reverse
const arr = [1,12,21,3,6,10];
arr.sort();
console.log(arr);
arr.sort((a,b)=>a-b);
console.log(arr);
7)splice
删除 插入 替换
var colors = ['green','yellow','blue'];
var remove colors.splice(0,1);
colors.splice(1,0,'white','red');
colors.splice(1,1,'gray');
8)slice
colors.slice(-2,-1);
9)迭代方法
every 返回 true or false
some 任一项返回true,返回true,否则false
forEach 没有返回值
map 返回调用结果组成的数组
map 实例
const arr = [1,12,21,3,6,10];
const abc = arr.map(i=>i+1);
arr.push(33333);
console.log(arr);
console.log(abc);
10)reduce
参数
1、要返回的值
2、数组当前遍历的值
3、当前数组下标
4、当前数组
实例:
const list = [{
number: 123, // 辅导班number
bizNumber: '0SXADASDA1', // 辅导班bizNumber
assistantNumber: 12, // 辅导老师number
assistantName: '孙宁', // 辅 导老师name
}, {
number: 124, // 辅导班number
bizNumber: '0SXADASDA2', // 辅导班bizNumber
assistantNumber: 21, // 辅导老师number
assistantName: '晨晨', // 辅 导老师name
}, {
number: 125, // 辅导班number
bizNumber: '0SXADASDA3', // 辅导班bizNumber
assistantNumber: 2, // 辅导老师number
assistantName: '张三', // 辅 导老师name
}, {
number: 126, // 辅导班number
bizNumber: '0SXADASDA4', // 辅导班bizNumber
assistantNumber: 3, // 辅导老师number
assistantName: '李四', // 辅 导老师name
}, {
number: 127, // 辅导班number
bizNumber: '0SXADASDA5', // 辅导班bizNumber
assistantNumber: 3, // 辅导老师number
assistantName: '李四', // 辅 导老师name
}, {
number: 128, // 辅导班number
bizNumber: '0SXADASDA9', // 辅导班bizNumber
assistantNumber: 2, // 辅导老师number
assistantName: '张三', // 辅 导老师name
}];
const noRepeatSubClazz = (subClazzArr) => {
if (subClazzArr.length === 0) {
return [];
}
return subClazzArr.reduce((calc, item, index) => {
if (index > 0) {
const b = calc.some(c => c.assistantNumber === item.assistantNumber);
if (!b) {
calc.push(item);
}
} else {
calc.push(item);
}
return calc;
}, []);
}
const arr = noRepeatSubClazz(list);
console.log(arr);
11)es6的其它方法
日期
时间戳
console.log(Date.now());
console.log(+new Date());
扩展 moment
http://momentjs.cn/docs/
字符串
1、charAt
2、concat
3、substr
4、indexof >0 存在查找的字符,和所在的位置
5、lastindexof
6、trim
7、toLocaleUpperCase toLowerCase
8、可以用正则表
text.match
text.search
text.replace
9、replace
10、localeComare
内置对象
Global对象
Global方法
encodeURI
encodeURIComponent
decodeURI
decodeURIComponet
console.log(encodeURI('https://www.bcdef.com/ddd 张三'));
console.log(encodeURIComponent('https://www.bcdef.com/ddd 张三'));
console.log(decodeURI('https://www.bcdef.com/ddd%20%E5%BC%A0%E4%B8%89'));
console.log(decodeURIComponent('https%3A%2F%2Fwww.bcdef.com%2Fddd%20%E5%BC%A0%E4%B8%89'));
eval() 放弃
Global属性
Date,RegExp,Error,EvalError,......
window 对象
Math对象
常用方法
max,min,
ceil 执行向上舍入
floor 执行向下舍入
round 标准舍入
random 随机数
网友评论