扫码关注官方订阅号
这个声明了一函数 会不会提升 但是我提到最前面还是可以执行啊 求解
ringa_lee
针对函数,分函数声明和函数表达式两种,这两种的提升方式不同:
函数声明
函数表达式
hello("Tom"); // 输出: Hello Tom function hello(name) { console.log(`Hello ${name}`); }
提升后,就等同于:
function hello(name) { console.log(`Hello ${name}`); } hello("Tom");
hello("Tom"); // 报错 var hello = function (name) { console.log(`Hello ${name}`); } hello("Jimmy"); // 输出: Hello Jimmy
提升后,等同于:
var hello; hello("Tom"); hello = function (name) { console.log(`Hello ${name}`); } hello("Jimmy");
找到一个文档,讲的也不多,在这里
非严格模式中,是函数声明就会提升到当前作用域的最上面。
var a = function(){ alert(2); }
这么就不会了,因为这不是函数声明,var a会被提升(变量声明提升),后面的赋值还在当前执行。
在同一作用域中会提升,{}里边,也就是在window.onload里会提升,而在这个方法外面是不能访问a的。
window.onload=function(){ // 在这个{}以内都可以访问 a(); //可以访问 function a(){console.log(1)} } a();// 不可以访问
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
针对函数,分
函数声明和函数表达式两种,这两种的提升方式不同:函数声明
提升后,就等同于:
函数表达式
提升后,等同于:
找到一个文档,讲的也不多,在这里
非严格模式中,是函数声明就会提升到当前作用域的最上面。
这么就不会了,因为这不是函数声明,var a会被提升(变量声明提升),后面的赋值还在当前执行。
在同一作用域中会提升,{}里边,也就是在window.onload里会提升,而在这个方法外面是不能访问a的。