用AI赚第一桶💰低成本搭建一套AI赚钱工具,源码可二开。 广告
常规的函数定义: function a() {} 另一种方式: var a = function() {} 那么这两种方式有何区别呢? 先从js运行机制来分析一下: js脚本会先被编译解析再在浏览器的js引擎中运行,而编译解析有个规律,那就是函数会先被解析到内存,所以函数定义前也可以调用,而变量必须先定义在使用,就是这个原因。 先看下面的一个问题: var a = 'a';function a() {}a(); 这回报错:Uncaught TypeError: a is not a function(…) a不是一个函数,a实际上就是字符串'a'了,所以我们定义的函数a就无法使用了,因为被var a = 'a';覆盖了 这和php的不同分析: js的变量定义,变量名前面没有$,在用php定义变量是这样表示的$a = 'a';所以php中变量名可以和函数名相同,但是js中不行,js中定义与函数名相同的变量会把函数覆盖掉。 并且php的函数调用,比较灵活,$a = 'a';function a() {};$a();是正常的,跟a()是相同的效果。但是js中由于变量的表示和函数的表示没有区别,所以js中就不能这样了。 所以现在问题也清晰了,两种方式的函数定义本质上没有区别,区别在于第二种是将函数赋值给了变量,这样在上下文中更有表现力,特别是在需要传递函数的情况下。