天天看点

走进JavaScript——重拾函数

通过构造器的方式来创建函数,最后一个参数为函数体其他为形参

由于函数体是通过字符串拼接的,因此我们可以用这个特性来实现代码的组合

还可以用这个特性来实现json字符串转对象

甚至我们可以利用它来实现重载运算符

我们可以将返回的函数作为构造器来创建对象

函数名加()可以执行一个函数

那如果没有函数名呢

也就是不支持直接这么写,我们需要将以上函数改成一段表达式,将函数进行运算就成表达式了

那么怎么执行它呢,在函数后面加()

以上代码不太优雅对吧,我们可以用一个()将它包起来

()也是会进行运算的

只要你给函数传递参数它就会进行运算,并不会因为你没有使用它

非惰性求值得另外一个例子就是在使用alert时

第一个输出2是因为alert只接受一个参数,但由于函数是不限制参数个数的并且是非惰性求值所以alert中的第二个参数还是会被运算只是没有被alert使用罢了

callee的意义就在于当我们使用匿名函数时可以去调用函数本身

还有一种情况是当我们重写函数时

caller的意义就在于我们能够知道此函数是被谁调用的