javascript - 请解释这段 js 代码
PHPz
PHPz 2017-04-10 16:00:09
[JavaScript讨论组]
var f = String.fromCharCode;
for (var i = 65; i < 70; i++) {
  f = f.bind(0, i);
}
f(); //输出为 "ABCDE", 为什么?

chrome 截图如下:

PHPz
PHPz

学习是最好的投资!

全部回复(1)
PHP中文网

最终相当于执行了String.fromCharCode(65, 66, 67, 68, 69),所以结果是ABCDE。为什么呢?这要从bind函数说起。

bind的第一个参数是函数执行时的this的值,fromCharCode是一个静态方法,this是什么都无所谓,所以可以随便传。

除了第一个参数外,bind还可以接受任意多个参数,这些参数在执行时会传给被绑定的方法。所以第一次循环结束后,相当于在fromCharCode上绑定了一个参数65;第二次循环结束后,又绑定了一个参数66(现在一共绑定了65、66 2个参数),以此类推,最终的f相当于在原来的fromCharCode上绑定了5个参数,所以得到的结果为ABCDE

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号