一、{} 包围对象object;包围代码块code block (如方法体,或普通代码块等)
二、() 包围参数列表;作为自调用表达式,包围一些需要通过运算得出结果的代码(其中包围的代码会执行一次)。函数表达式可以自调用(即自动运行一次)。如果表达式后面紧跟(),会自动调用。不能自调用声明的函数,通过添加括号,来说明他是一个函数表达式。
fucntion foo() { console.log('hello world') ; } //声明一个函数 foo()
foo() //调用这个函数
(function bar () {console.log( 'hello you'); }) () // 自调用函数 并立刻执行了一次
bar // 报错 未定义
bar () //报错 未定义
三、箭头函数
箭头函数表达式(ES6)的返回值
箭头函数表达式x => x,表示function(x) {return x;}。
但如果返回值是object类型,则不能为x => {name:'JT'},,需要改为x => ({name:'JT'})。
getObj = (name) => {someone:name}; // getObj('fyy') 得不到对象返回值,为undefined
getObj = (name) => ({someone: name}); //getObj('fyy') 得到对象返回值,为{name:'fyy'}
// 另外,在使用typeof查看箭头函数表达式的类型的时候,也可以看到()的作用。
typeof x => x // 语法错误。
typeof (x => x) // "function"。使用()将箭头函数表达式运行为一个结果|返回值。这个返回值是一个函数。然后用typeof判断。
创建匿名函数并立即执行
// 报错 Uncaught SyntaxError: Function statements require a function name
function(str){return str;}
// 用()包围代码段,成为一个函数
(function(str){return str;})
//函数后加参数(...args),得到的函数会执行一次
(function(str){return str;})('test')
// 可将函数赋值
func = (function(str){return str;})