| 学习时间 | 完成时间 ✅ | 重难点 | 疑问/遗漏 |
|---|---|---|---|
| 复习时间 | |||
循环
let i=0;for(;i<10;) {i++} //类似while循环while(i<10){i++}for(;i;){i++;if(i==11) {i=0; //等价于 break;}}//从0开始做加法,加到什么时候总和是小于100var sum=0;for(var i=0;i<100;i++) {sum+=i;if(sum>=100) {break;}}continue 跳过本次循环,for循环的中间语句属于条件语句,为false就停止循环了//打印0-100的数//()只能有一句,不能写比较// {} 不能出现 i++,i--var i=100;for(;i--;) {congsole.log(i)}//do while 无论条件正确与否,都会执行一次do{//先执行do,再判断}while(0)//n的阶乘var n=5;var num=1;for(var i=1;i<=5;i++) {num*=i;}//已知789打印出来‘987’var num=789;var a=num%10;var b=(num-a)%100/10;var c=(num-a-b*10)/100;console.log(''+a+b+c)//打印100以内的质数//仅仅能被1和自己整除的数var c=0;for(var i=2;i<100;i++) {for(var j=1;j<=i;j++) {if(i%j==0) {c++}}if(c==2) {console.log(i)}}
引用值初识
array object function date RegExp
显示及隐式类型转换
typeof(null) //object 这是个历史的bugtypeof(NaN) //numbertypeof(undefined) //‘undefined’ 字符串typeof(1-'1') //numbertypeof(a) //字符串 ’undefined‘typeof(typeof(a)) //string 任何typeof的值,再typeof结果都是stringlet和const定义的变量会存在‘暂时性死区’即变量在未定义之前使用会报错,这使得typeof也不是百分百安全//显式类型转换Number('true') //NaN 里面是字母都会转化为NaNNumber(true) //1Number(null/false) //0Number(undefined) //NaN 非数Number('123') //123parseInt('123') //123parseInt(true/false/null/undefined) //NaN//隐式类型转换1.123.toFixed(2) //1.12undefined == 0 undefined>0 undefined<0 //false > < = 都为falsenull == 0 null>0 null<0 //falsenull==undefined //truelet a='122'typeof(+a) //numberisNaN() 函数用于检查其参数是否是非数字值isNaN('123') //falseisNaN('a') //trueisNaN(null) //false 看看Number(null)isNaN(undefined) //true-true==-1 +undefined 为NaN NaN+"" 为‘NaN’ 字符串NaNtypeof(a)&&(-true)+(+undefined)+'' 为true!!' '+!!''-!!false 为1 1+0-0=1
斐波那契数列
方法一:function* fibonacci() {let [prev, curr] = [0, 1];for (;;) {yield curr;[prev, curr] = [curr, prev + curr];}}for (let n of fibonacci()) {if (n > 1000) break;console.log(n);}方法二:function fb(n) {if(n<=0) {return 0;}if(n<=2) {return 1;}return fb(n-1)+fb(n-2)}方法三:if(0<n<=2) {return 1}else{var n1=1,n2=1,n3;for(var i=2;i<n;i++) {n3=n1+n2;n1=n2;n2=n3;}}

n的介乘function fact(n) {if(n===1) {return 1;}return n*fact(n-1)}
容易忽视的问题
function fn() {var a1=a2='2';}在函数中这样定义a2会导致内存泄露
下面两个打印都是undefined
因为let不会在全局声明时,创建window对象属性,在箭头函数中没有自己的this,所以都是undefined
