-
我在 JavaScript 里把一个字符串数组用 map 直接交给 parseInt 想批量转成数字、写法简洁我很满意,结果转出来是 1、NaN、NaN 一片狼藉,我盯着这行干净利落的代码百思不得其解,最后才搞懂 map 会偷偷给回调塞三个参数而 parseInt 把其中那个下标当成了进制的深度复盘
我有一个字符串数组 [1,2,3](字符串),想批量转成数字,觉得最优雅是 arr.map(parseInt)——把 parseInt 直接当回调传给 map,简洁 point-free。满以为得到 [1,2,3],结果是 [1,NaN,NaN]:第一个对后面全是 NaN。我反复确认数组就是三个正常数字字符串、parseInt("2") 单独调明明是 2。直到查 map 给回调…- 3
- 0
-
一个把对象方法直接作为回调传给 setTimeout 的写法,执行时 this 变成了 undefined、访问 this 的属性全报错:一次 JavaScript this 绑定丢失的深度复盘
把对象的方法 handleClick(里面用了 this.count)作为回调传给 setTimeout,执行时报 Cannot read properties of undefined——this 居然是 undefined。根因是 JS 的 this 不由'函数在哪定义'决定、而由'如何被调用'决定:setTimeout(obj.fn) 只是把函数本身取…- 0
- 0
-
我把对象的一个方法作为回调传给了 setTimeout,运行时它里面的 this 竟然变成了 undefined,直接报错,我对着 JavaScript 的 this 取决于怎么调用而非在哪定义这个坑排查大半天的复盘
一个让无数从其他语言转来的人对 JavaScript 又恨又怕的经典坑——this。折磨在同一个方法在对象上直接调用一切正常,一旦传出去作回调 this 就神秘变了。有个对象 timer 封装了 seconds 和 tick 方法(tick 里用 this.seconds++)。直接 timer.tick() 正常,但 setTimeout(timer.tick, 1000) 一秒后报错 Cann…- 3
- 0
-
我把对象的方法直接传给 setTimeout 当回调,运行到一半就报 this 是 undefined,我对着 JavaScript 的 this 指向丢失排查了大半天的复盘
用原生 JavaScript 写小组件,有个类的方法负责更新状态,我把它当回调传给了 setTimeout 和按钮事件监听,读起来天经地义。一运行控制台就炸:Cannot read properties of undefined,报错在方法内部 this.state 那行。懵了:方法明明是这对象的,this 不就该是它吗?排查大半天才理解 JS 里让无数人栽跟头的概念:this 的指向不取决于方法…- 0
- 0
-
同一个方法自己调好好的、一传给 setTimeout 或事件监听当回调就报 this 是 undefined:JavaScript this 绑定丢失的避坑复盘
这是一个让我对 JavaScript 的 this 彻底改观的 bug,也是几乎每个 JS 开发者都会踩一次的成人礼。事情是这样的:我写了一个类里面有个方法 handleClick,方法里要用到这个类实例的一些数据比如 this.state。开发时我直接调用 instance.handleClick 一切正常,可当我把这个方法作为回调函数传出去,比如绑给一个按钮的点击事件或者塞进一个 setTim…- 0
- 0
回调
幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分
我的优惠劵
-
¥优惠劵使用时效:无法使用使用时效:
之前
使用时效:永久有效优惠劵ID:×
没有优惠劵可用!





