javascript中的变量与作用域(函数)

今天的元气已上线

没有什么是办不到的事情

加油

??\\\嘻嘻嘻

下面来写代码啊啊啊啊

js中的作用域

var a = 123;
function fun1(){
    alert(a);//找寻全局变量,输出123
    a = 234;//没有用var声明的变量,不会提前哦
}
fun1();//123
console.log(a);//被函数中的新值给覆盖//234

看完上述代码,你是不是对作用域有了深刻的理解呢

NONONO!!!

不一定哦,我们的Js可没有这么简单,下面再来看另一份Js代码

思考输出是什么

不要轻易放弃

var a = 123;
function fun(a){ 
    alert(a); // a === undefined
    a = 456;   //此时是给函数作用域中的形参a赋值,不影响全局的变量a
}
fun();//无参调用 
console.log(a);//a的值仍然不变,为123;

HAHAHAHA

不要着急,不要着急,相信你看完上述代码,并实际操作(当然一定要实际自己动手操作)之就会恍然大悟

还没懂的小伙伴也不要着急,铛铛荡!!!!!

总结来啦

  1. 对于无参函数来说,如果在函数体中调用某个变量函数,函数会先在自己的作用域中从查找,如果没有就向外层的作用域中查找,例如上述代码一,调用fun函数输出123。
  2. 在js中用var声明的变量或者是函数表达式都会有变量提升的作用,例如下面的例子就很好的说明了这一点
    alert(a); var a = 123;这个代码中a被提前声明,但没有被赋值,所以弹出结果是undefined
    fn();var fn = function() { alert("hello"); }这串代码不会执行,类比变量,fn的值此时是undefined并不是函数,所以无法调用,即会报错。
  3. 但是没有用var声明的则不会提前,但函数会被提前加载,也就是说,函数调用可以在函数声明以前,也可以在声明以后,总之可以再任何位置但是变量将失去提前的作用,例如
    fun();function fun() { alert("hello"); }这串代码将会被完美执行
    但是alert(a); a =456;此时这串代码会报错,因为不用var将失去提前声明变量的作用。

注意:

未定义与未声明不是一个概念!!!!

undefined 与 无情报错,我们当然喜欢undefined了

太强硬可不好,嘻嘻

好了,下面来思考另一个代码的输出

var a = 123;
function fun(){
    alert(a);
    var a = 345;
}
fun();
alert(a);

当然我相信这对你来说小菜一碟

不过好好理解以上三个实例对我们理解js中的变量与函数有着至关重要的作用

加油 (NEVER GIVE UP!)

我常常想

我一定要努力去做一个傻小子

不管结果如何

都要撞一次南墙

不管那么多

开心就够了

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值