这几天一直没啥子状态,感觉要学习的太多了,ajax,jq,node,vue…最后还是选择了继续加强js基础,es6新加的各种npPLUS属性和方法。笔记都在代码块里了
把写日记的习惯给续上吧,不然感觉时间过得太虚了,就算每天流水感觉都比不写强。
好了,不多抱怨了。
上代码,少话
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// const a=100; //声明一个常量(还是有块级作用域...)
for (var i = 0; i < 3; i++) {
continue;
}
console.log(i); //会打印出3
for (let j = 0; j < 3; j++) {
continue; //let定义变量只对块作用域有效(同C)
}
// console.log(j); 会报错,
var temp = 123;
if (true) {
// console.log(temp); //这样会报错(未定义错误),暂时性死区
let temp = 'aaa';
console.log(temp);
} //暂时性死区,同名不受外界干扰也不干扰外界
console.log(temp);
const a = 100; //声明一个常量(还是有块级作用域...),
//重点在于不可以被反复声明(内存地址固定),值大部分情况不可以被改变,而且在初始化时候就得赋值
if (true) {
const a = 10;
if (true) {
const a = 20;
console.log(a);
}
console.log(a);
}
console.log(a);
ar1 = [10, 20];
ar1[0] = 'aaa';
console.log(ar1); //这种情况可以被改变(改变数组里面的值)
// ar1=[1,2]; //这样就不行了(重新赋值会改变ar1的地址)
//接下来是数组解构:把数组的值提取出来赋值给变量
var ar2 = [1, 2, 3];
var [a1, b1, c1, d1] = ar2;
console.log(a1, b1, c1, d1, 'aa'); //没有的为undefined
//接下来是对象解构:把对象的值按照一定顺序赋值给变量
var person1 = {
name: 'my',
age: 19
}
let { name: name1, age: age1 } = person1; //名字要一样(?)前变量名匹配属性!
console.log(name1, age1); //实际的变量名,赋值对象属性于任意变量名的变量
//接下来是箭头函数(用于简化函数定义语法)
// var fun=()=>{}; //通常把箭头函数赋值给一个变量,变量名字就是函数名字
var fun1 = () => {
console.log('吾乃箭头函数是也');
}; //箭头函数的创建
fun1(); //箭头函数的调用
var fun2 = (num1, num2) => num1 + num2; //如果箭头函数只有一句而且是返回值,可以不用大括号
console.log(fun2(1, 2));
var fun3 = num1 => num1 + 3; //如果箭头函数形参只有一个,可以不用小括号
console.log(fun3(3));
//箭头函数中没有this,用this指的是上下文的this
var person2={name:'Eille'};
var fun4=function(){
console.log(this);
return ()=>{
console.log(this); //返回的是父函数(?)的this
} //更具体的说,是箭头函数返回被定义的变量、区域的this,在全局下是undefined
}
var val=fun4.call(person2);
val();
var aaa=3154;
var person3={
age:11,
hi:()=>{console.log(this.age);},//全局下没有定义,为undefined(不是对象下的!)
say:()=>{console.log(this.aaa);}
};
person3.hi();
person3.say(); //全局下定义了就是定义的值 输出结果3154
//接下来是剩余参数函数:允许把不定项的参数传入函数
var fun5=(...args)=>{ //剩余参数函数
//传入的值会被依次转为数组[1,2,3,....]重要的!!!
let sum1=0;
args.forEach((items)=>{ //对数组的每个值进行操作
sum1+=items;
})
return sum1; //返回值
}
console.log(fun5(1,2,3));
//剩余函数和解构搭配使用!!都是重点啊QAQ
var str1=[1,2,3,4];
var [a2,...b2]=str1;
console.log(a2,b2); //a2的值是1 b2的值是[2,3,4] 数组
//接下来是数组扩展运算符方法
var arr4=[1,2,3,4];
//请一定注意!!!!!!!!!!...arr4会把原数组转成1,2,3,4这样的参数序列
//而在log打印时,会自动把,转成‘ ’而表现出 一个类似字符串的东西
//接下来来试试
console.log(...arr4); //结果是1 2 3 4 (参数序列转成)
//实际上:上相等于下X_X
console.log(1,2,3,4); //结果同上,都是1 2 3 4证明了...arr4是一个(参数序列)!!!!!
//这里的很多地方都会用到,,很是重要啊啊啊啊啊
var arr5=['a','b','c','d'];
// ...arr5 //实际上是转成了 'a','b','c','d'
//接下来是扩展语法的用法:合并数组
var arr6=[1,2,3,4];
var arr7=['a','b','c','d'];
var arr8=[...arr6,...arr7]; //达拉~合并了!...比想象的要简单
console.log(arr8);
arr6.push(...arr7); //第二种合并的方法,经典push方法
console.log(arr6);
var arr9=[];
arr9.push(1,2,3); //push也可以这么使用
</script>
</body>
</html>