2023/1/12

concat() 方法用于连接两个或多个数组
箭头函数不绑定this,默认去上一层作用域去找this,有用处
var 全局定义变量,变量会给到window

2023/1/6

学方老师昨天直播推荐的正则表达式30分钟入门教程

//匹配ip地址
((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)

后向引用用于重复搜索前面某个分组匹配的文本
零宽断言用于查找在某些内容(但并不包括这些内容)之前或之后的东西(指定一个位置)
负向零宽断言只是想要确保某个字符没有出现,但并不想去匹配它

\d{3}(?!\d)匹配三位数字,而且这三位数字的后面不能是数字
\b((?!abc)\w)+\b匹配不包含连续字符串abc的单词。
同理,我们可以用(?<!exp),零宽度负回顾后发断言来断言此位置的前面不能匹配表达式exp:
(?<![a-z])\d{7}匹配前面不是小写字母的七位数字。
一个复杂的例子:(?<=<(\w+)>).*(?=<\/\1>)匹配不包含属性的简单HTML标签内里的内容。

2023/1/5

听方老师讲2022年前端,vercel,figma公司
Figma-UI设计器 知乎-Figma是什么

听了一点js面试题。

  • setTimeout()打印循环
for(var i=1;i<4;i++){
    setTimeout(function(){
        console.log(i);
    },1000);
}

i为全局变量,会先执行完循环(js是单线程机制,先执行同步代码,最后执行异步代码,setTimeout是异步调用),
此时i的值已经为4,之前每次循环放入异步队列中的函数就会依次打印出i的值,即连续打印3次4

解决方法:

  1. 用let,let在循环中每一个值都会单独存在一个独立的作用域中不会被覆盖掉
  2. 闭包(不会)
for(var i=1;i<4;i++){
    (function(j){
        setTimeout(function(){
            console.log(j);
        },1000*j);
    })(i);
}
  • .this指向谁
    注意use script;严格模式

preView