- 将字符串转成数组,如var str=‘abc’ 转成 [a,b,c]
var str = 'abbc';
str.split('');
Array.from(str);
[...str];
[...new Set(str)]; // 还可以去重
[].slice.call(str);
- 看下面的代码会输出什么
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<iframe></iframe>
<script>
function fn(){
console.log(this.length);
}
fn();
var obj = {
length: 5,
method: function(fn) {
fn();
arguments[0]();
}
}
obj.method(fn,1);
</script>
</body>
</html>
第一眼发现这个iframe放这里干啥,后来才发现,若this指向的是window,this.length的值等于页面iframe的个数…,method中的fn()是没有谁调用的,所以this指向了window
,输出1,真是崩溃
而arguments[0]()则输出2,又懵逼了
首先将arguments[0]()看成arguments.fn(),那么fn中的this就指向了arguments,arguments是调用method传过来的参数,有两个即fn 和 1,所以arguments长度为2
后续还会更新。。。