函数 声明
function ledi(){} // 函数声明
变量赋值
var ledi = function (){} // 变量赋值
第一种:
function ledi (){
alert('ledi1')
}
ledi()
function ledi (){
alert('ledi2')
}
ledi()
首先 这两个都是 属于 函数声明 , 都会在 预编译 阶段 处理, 而 函数名 相同,
会 按 后定义的 来 定义函数, 在执行阶段 只会 看到 后 定义 的 函数 结果,也就 不难理解了。
自己理解:
声明 函数 就是 函数名 相同 , 就像是 声明变量 一样,后面的 会 替换 前面的 变量,
在 执行 阶段 只会 看到 后面函数 的 结果。
第二种:
var ledi = function (){alert('ledi1')};
ledi()
ledi = function (){alert('ledi2')}
ledi()
这段 代码, 首先,判断 两种 都 属于 变量赋值。 两个代码名一样, 分配 一个 内存空间,存放变量 ledi 内容。
当 代码执行时, 按照 顺序 执行 和 赋值, 会 先后得到两种结果。
自己理解就是:
先 声明了一个变量赋值 给函数, 执行 这个 赋值函数 ,执行完之后,又给变量 ledi 赋值了一个函数,又执行了 一次。
所以 执行了 两次。
第三种:
function ledi(){alert('ledi1')}
ledi()
ledi = function (){alert('ledi2')}
ledi()
首先判断,前一种, 属于 函数声明, 后一种,属于 变量赋值,
首先 执行 函数声明 的 这块函数,
然后,将 ledi 变量 重新赋值 即 初始化,重新赋值后,执行 变量赋值的函数。
第四种:
window.alert(ledi);
function ledi (){}
// 这 四行 代码分开执行
window.alert(ledi);
var ledi = 123;
js 预编译 先把函数 放在了最上面 , 所以 两次 弹窗 都是 ledi 这个 函数。
网友评论