函数简化

第一种写法

1
2
3
4
render(createElement) {
return createElement("h1", "你好啊");
}

这是一个常规的函数声明方式

第二种写法

1
2
3
4
render: (createElement) => {
return createElement("h1", "你好啊");
}

这是一种箭头函数写法。箭头函数通常用于简化代码,并且具有与常规函数不同的 this 绑定方式。在这里,它做的是与第一种写法一样的事情,只不过是用箭头函数来代替常规函数,返回的是同样的结果。

第三种写法

1
2
3
4
render: createElement => {
return createElement("h1", "你好啊");
}

这种写法省略了箭头函数的括号,通常在只有一个参数时可以省略括号。这个写法和第二种写法是等价的,createElement 仍然是箭头函数的参数,只不过省略了括号,方便书写。

第四种写法

1
2
render: createElement => createElement("h1", "你好啊");

是一种箭头函数的简写形式,当箭头函数只有一个表达式时,可以省略大括号和 return 关键字。这个写法更简洁,实际上它和第二种写法的功能完全相同,只是更简洁。

第五种写法

1
2
render: q => q("h1", "你好啊");

这仍然是箭头函数的形式,只是将参数名从 createElement 改成了 q。在 JavaScript 中,函数参数的名称可以任意定义,只要在函数内部使用它就行。所以这个写法也是有效的,并且与其他写法效果相同。

注意事项

1.第一种到第二种的转化:

第一种方法:

是一个普通的方法定义。这里的 render 是一个方法名,createElement 是该方法的参数。在 ES6 中,我们可以直接用这种方式在对象或类中定义方法。因此没有冒号,render 是直接定义的函数。

第二种方法:

在对象字面量中定义方法时,需要使用 key: value 的形式,key 是方法名,value 是函数。在箭头函数的情况下,函数是作为值赋给 render 属性的。所以我们必须使用冒号来连接方法名和箭头函数。

2.当你在 对象字面量 中定义方法

必须用冒号(:)连接键名和函数。例如,Vue 组件的 render 方法就会写成 render: (createElement) => {}。而在类或者常规函数中,定义方法时则不需要冒号,直接写函数名即可。