薄情伤 2022-05-04 13:57:50
@zhongtingbing 你去试试在 不加 apply 时去 sayHi 函数里打印下 this看看什么
是指向window的。因为 sayHi 函数定义在全局中,所以调用时里面this指向window,
所以才需要加上 apply,显示绑定 this 值(input对象)到 sayH 函数里面去
这里用了apply确实使得this指向了input对象;对于“因为 sayHi 函数定义在全局中,所以调用时里面this指向window”,测试了一下直接使用fn(arguments)的话,在sayHi中打印this为undefined;js中this是在运行时绑定的,而不是定义时绑定的
薄情伤 2022-05-04 13:54:33
// 从后向前遍历,每次截取三个字符,直到完成 const str = '10000000000'; const arr = []; for (let len = str.length, i = len - 1; i >= 0; i = i - 3) { let start = i - 2; if (start < 0) start = 0; arr.push(str.slice(start, i + 1)); } return arr.reverse().join('.');
薄情伤 2022-05-04 13:46:30
ES6转ES5分为以下两种情况
1.语法转换
ES6语法通过babel等工具为ES5语法,本质是将ES6语法转AST(抽象语法数——对编程语言编写的程序的一种描述)再将AST转为ES5语法代码;例如:let,const转换为var,箭头函数转换为function函数声明等
2.API转换
采用babel-polyfill等工具对ES5中不存在的API(包括Set等ES6中新的数据结构)做修复,例如:Array.prototype.includes
Set
Map
等在ES5中不存在,需要用相应的ES5代码实现这些API
补充说明
- .vue文件通过webpack的vue-loader分析出
script
style
template
再走上面的ES6转ES5流程 - jsx通过babel插件转js语法再走ES6转ES5
- ts通过tsc结合tsconfig.json直接转ES5
- 共 1 页
- 1
在理,至少在遇到问题的时候能快速定位
第 2 题:['1', '2', '3'].map(parseInt) what & why ?