javascript - 关于传参的问题!
PHPz
PHPz 2017-04-10 18:01:28
[JavaScript讨论组]
function t(flag){
    if(flag){
        s="ifscope";
        for(var i=0;i<2;i++);
    }
    console.log(i);
}
t(true);
console.log(s);

不太理解这段代码什么意思。
为什么加上t(true);后,最后一句就可以执行了?不加的话,就会报错?

PHPz
PHPz

学习是最好的投资!

全部回复(4)
巴扎黑

变量s前面没有var,为全局变量

    function t(flag){

        if(flag){
           s="ifscope";
            for(var i=0;i<2;i++);
        }
        console.log(i);
    }
    //t(true);//声明了全局变量s
    console.log(s);//s is not defined;

题主可以试着看一下控制台console的英文报错

巴扎黑

首先要明确,在未声明变量时,想要打印出变量的值是会报错的。
其次,要明白执行t(true)后会声明一个全局变量s,值为ifscore

我想这样就能明白,加上t(true)不会报错,而不加会报s is not defined(…)的错误了

高洛峰

应该在控制台里看下报的什么错,一般都能找到原因的,错误类型很多,一般会错误信息会指向出错的那一行代码,在这里就是变量没声明

伊谢尔伦
function t(flag){
    if(flag){
        s="ifscope";
        for(var i=0;i<2;i++);
    }
    console.log(i);
}
t(true);//这是你调用函数的,你没有调用,里面的代码自然不会执行,不执行,s就没有声明,然后你console.log(s)就自然找不到s咯,找不到就报错 s is not defined咯。
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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