你不知道的JavaScript 观后收获
2020-12-30
今天的收获
奇特的~运算符
- 解释一下
~42 //相当于 -(42+1)==>-43 - 适用场景
var a = 'hello world';
if (~a.indexOf('lo')) {
console.log(true,~a.indexOf('lo'))
}
~~-78.9==> -78 //最大支持到32位
三元运算符?:判断a是否为真
var b=a?true:false //建议写为 var b=Boolean(a)?true:false
把关运算符&&
function foo(){
console.log(a)
}
if(a){
foo()
} //简写 a&&foo()
2020-1-6
强制类型转换部分
-
在比较的时候可能会默认调用 valueof toString 方法进行默认转换
-
我们要对==两边的值认真推敲,以下两个原则可以让我们有效地避免出错。
-
如果两边的值中有true或者false,千万不要使用==。
-
如果两边的值中有[]、""或者0,尽量不要使用==。这时最好用
===
来避免不经意的强制类型转换。这两个原则可以让我们避开几乎所有强制类型转换的坑
-
地狱回调部分
-
地狱回调造成的结果是无法被维护,更新
-
地狱回调的代码就好像一条铁链,一环扣着一环,如果其中一环断掉(出现问题),就会出现一着不慎,全盘皆输的现象,代码逻辑都是固定死的,很难将其中一环打开重新修改;
-
信任问题:无法保证回调函数100%会被调用,即使写了大量逻辑代码来确保代码可以被执行,但是仍然会造成代码堆积的现象,最终导致代码很难更新和维护
2020-2-2
关于箭头的理解
箭头函数中没有自己的this值,箭头函数中所使用的this来自函数作用域链, 其遵循普通变量的规则,在函数作用域中一层一层向上找;也就是说箭头函数中的this取决于外部函数(摘抄于你不知道的JavaScript)
分类:
前端
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!