学习时间 完成时间 ✅ 重难点 疑问/遗漏
复习时间

重点:循环,类型转换

循环

  1. let i=0;
  2. for(;i<10;) {
  3. i++
  4. } //类似while循环
  5. while(i<10){i++}
  6. for(;i;){
  7. i++;
  8. if(i==11) {
  9. i=0; //等价于 break;
  10. }
  11. }
  12. //从0开始做加法,加到什么时候总和是小于100
  13. var sum=0;
  14. for(var i=0;i<100;i++) {
  15. sum+=i;
  16. if(sum>=100) {
  17. break;
  18. }
  19. }
  20. continue 跳过本次循环,for循环的中间语句属于条件语句,为false就停止循环了
  21. //打印0-100的数
  22. //()只能有一句,不能写比较
  23. // {} 不能出现 i++,i--
  24. var i=100;
  25. for(;i--;) {
  26. congsole.log(i)
  27. }
  28. //do while 无论条件正确与否,都会执行一次
  29. do{
  30. //先执行do,再判断
  31. }while(0)
  32. //n的阶乘
  33. var n=5;
  34. var num=1;
  35. for(var i=1;i<=5;i++) {
  36. num*=i;
  37. }
  38. //已知789打印出来‘987’
  39. var num=789;
  40. var a=num%10;
  41. var b=(num-a)%100/10;
  42. var c=(num-a-b*10)/100;
  43. console.log(''+a+b+c)
  44. //打印100以内的质数
  45. //仅仅能被1和自己整除的数
  46. var c=0;
  47. for(var i=2;i<100;i++) {
  48. for(var j=1;j<=i;j++) {
  49. if(i%j==0) {
  50. c++
  51. }
  52. }
  53. if(c==2) {
  54. console.log(i)
  55. }
  56. }

引用值初识

array object function date RegExp

显示及隐式类型转换

  1. typeof(null) //object 这是个历史的bug
  2. typeof(NaN) //number
  3. typeof(undefined) //‘undefined’ 字符串
  4. typeof(1-'1') //number
  5. typeof(a) //字符串 ’undefined‘
  6. typeof(typeof(a)) //string 任何typeof的值,再typeof结果都是string
  7. letconst定义的变量会存在‘暂时性死区’即变量在未定义之前使用会报错,这使得typeof也不是百分百安全
  8. //显式类型转换
  9. Number('true') //NaN 里面是字母都会转化为NaN
  10. Number(true) //1
  11. Number(null/false) //0
  12. Number(undefined) //NaN 非数
  13. Number('123') //123
  14. parseInt('123') //123
  15. parseInt(true/false/null/undefined) //NaN
  16. //隐式类型转换
  17. 1.123.toFixed(2) //1.12
  18. undefined == 0 undefined>0 undefined<0 //false > < = 都为false
  19. null == 0 null>0 null<0 //false
  20. null==undefined //true
  21. let a='122'
  22. typeof(+a) //number
  23. isNaN() 函数用于检查其参数是否是非数字值
  24. isNaN('123') //false
  25. isNaN('a') //true
  26. isNaN(null) //false 看看Number(null)
  27. isNaN(undefined) //true
  28. -true==-1 +undefined NaN NaN+"" 为‘NaN 字符串NaN
  29. typeof(a)&&(-true)+(+undefined)+'' true
  30. !!' '+!!''-!!false 1 1+0-0=1

斐波那契数列

  1. 方法一:
  2. function* fibonacci() {
  3. let [prev, curr] = [0, 1];
  4. for (;;) {
  5. yield curr;
  6. [prev, curr] = [curr, prev + curr];
  7. }
  8. }
  9. for (let n of fibonacci()) {
  10. if (n > 1000) break;
  11. console.log(n);
  12. }
  13. 方法二:
  14. function fb(n) {
  15. if(n<=0) {
  16. return 0;
  17. }
  18. if(n<=2) {
  19. return 1;
  20. }
  21. return fb(n-1)+fb(n-2)
  22. }
  23. 方法三:
  24. if(0<n<=2) {
  25. return 1
  26. }else{
  27. var n1=1,
  28. n2=1,
  29. n3;
  30. for(var i=2;i<n;i++) {
  31. n3=n1+n2;
  32. n1=n2;
  33. n2=n3;
  34. }
  35. }

3、循环、引用值初识、显示及隐式类型转换 - 图1

  1. n的介乘
  2. function fact(n) {
  3. if(n===1) {
  4. return 1;
  5. }
  6. return n*fact(n-1)
  7. }

容易忽视的问题

  1. function fn() {
  2. var a1=a2='2';
  3. }
  4. 在函数中这样定义a2会导致内存泄露

下面两个打印都是undefinedimage.png
因为let不会在全局声明时,创建window对象属性,在箭头函数中没有自己的this,所以都是undefined