标签:生成 自己 全局 cal def ret dia 结果 直接
箭头函数
// 有有一个变量且直接return的
var f = v => v;
// 等同于
var f = function (v) {
return v;
};
// 不需要参数或需要多个参数 不直接return的
var sum = (num1, num2) => {
let k=num1 + num2;
return k;
};
// 等同于
var sum = function(num1, num2) {
let k=num1 + num2;
return k;
};
插一句 call的使用
var a = 10;
function call_1() {
console.log(this.a);
}
var call_obj = {
a: 20
}
call_1();//10
call_1.call(call_obj);//20 this指向call_obj
关于 箭头函数的this 没看懂 自己总结的......别信
// 直接写好的箭头函数 通过点点点就能调用的 obj1.fn_new(); this执行window;
var ts = ‘全局‘;
const obj1={
ts:"obj1",
fn_new:()=>{
console.log(this.ts);
}
}
obj1.fn_new(); //全局
//无论多少层 直接能 点 点 点的就是 this就是指向 window
const obj3={
ts:"obj3",
fn_obj:{
ts:"obj3_3",
fn_new_2:()=>{
console.log(this.ts);
}
}
}
obj3.fn_obj.fn_new_2() //全局
// 如果箭头函数使用过 ()diao调用之后才得到的。
var ts = ‘全局‘;
const obj2={
ts:"obj2",
fn_new_1:function(){
console.log(this.ts);
return ()=>{
console.log(this.ts);
}
}
}
let fn=obj2.fn_new_1(); //obj2 fn就是箭头函数 通过()调用才得到
fn(); //obj2
//箭头函数的this跟 生成箭头函数的那个函数(这里的是fn_new_1函数)的this指向相同
//这里的是fn_new_1函数的this指向 调用它的fn_obj对象
// call改变this的时候箭头函数也跟着变
const obj3={
ts:"obj3",
fn_obj:{
ts:"obj3_3",
fn_new_1:function(){
console.log(this.ts);
return ()=>{
console.log(this.ts);
}
}
}
}
let fnn=obj3.fn_obj.fn_new_1();//obj3_3
fnn();//obj3_3
神奇的一些
//箭头函数本身是没有this 箭头函数多次嵌套 内层的this等于外层的this
var a=2;
var k={
a:1,
ff:function(){
console.log(this.a)
return ()=>{
console.log(this.a);
return ()=>{
console.log(this.a);
}
}
}
}
let f1=k.ff(); //1
let f2=f1(); //1
f2(); //1
// 使用settimeout 是 感觉前面的想法又不对了 不管定时器就对了
// 只有调用 foo函数时 定时器才会启动 箭头函数才生效
//箭头函数的this跟 生成箭头函数的那个函数(这里的是foo函数)的this指向相同
var id=10;
function foo() {
console.log(this.id);//10
setTimeout(() => {
console.log(‘id:‘, this.id);
}, 100);
}
foo();//10 foo的this指向 window(因为window.foo())
var kk={
id:20,
fuu:function(){
setTimeout(() => {
console.log(‘id:‘, this.id);
}, 100);
}
}
kk.fuu();//20 fuu的this指向 kk 箭头函数也就指向kk
箭头函数的arguments
//获取实参
function func(a,b,c){
console.log(arguments);
//[1, 2, 3, callee: ƒ, Symbol(Symbol.iterator): ƒ]
console.log(arguments[4]); //undefined
console.log(arguments[3]); //4
}
func(1,2,3,4)
//...a 解开后的结果等于1,2,3 所以a的等于 [1,2,3]
let fn=(...a)=>{
console.log(a);
}
fn(1,2,3);// [1, 2, 3]
标签:生成 自己 全局 cal def ret dia 结果 直接
原文地址:https://www.cnblogs.com/myniu/p/11771777.html