javascript函数提升
ringa_lee
ringa_lee 2017-04-11 11:45:04
[JavaScript讨论组]


这个声明了一函数 会不会提升 但是我提到最前面还是可以执行啊 求解

ringa_lee
ringa_lee

ringa_lee

全部回复(3)
天蓬老师

针对函数,分函数声明函数表达式两种,这两种的提升方式不同:

函数声明

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");

找到一个文档,讲的也不多,在这里

PHP中文网

非严格模式中,是函数声明就会提升到当前作用域的最上面。

var a = function(){
    alert(2);
}

这么就不会了,因为这不是函数声明,var a会被提升(变量声明提升),后面的赋值还在当前执行。

天蓬老师

在同一作用域中会提升,{}里边,也就是在window.onload里会提升,而在这个方法外面是不能访问a的。

window.onload=function(){ // 在这个{}以内都可以访问
  a();    //可以访问
  function a(){console.log(1)}
}       
a();// 不可以访问
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号