JS变量作用域(入门)

本文探讨了JavaScript中的作用域规则,特别是在ES5中的表现。函数内部可以访问外部变量,但外部无法直接访问函数内部变量。通过示例展示了全局变量与局部变量的区别,以及对象引用在函数参数传递中的行为。在三种不同情况下,分别说明了如何修改对象的属性值以及对象引用的改变对作用域的影响。
摘要由CSDN通过智能技术生成

作用域:指一个变量它在哪些代码范围能够被使用,这些地方就是变量的作用域。

在es5中,函数的代码块内部的代码可以访问函数代码块内的变量﹑也可以访问外部的变量(全局变量),取变量时,采取就近原则。

函数外面的代码不能直接访问函数内部的变量
 

例子:

<script>
var b = 10
function fn(){
        var a = 20
        console.log(b)//10 ,函数内部可以获取外部的变量
    }
    fn()
   console.log(a)//报错,函数外部不能获取函数内部的变量
</script>

全局变量:变量会在程序运行时 ,把它设置为window对象的属性

局部变量:就是只在函数内部使用,外部不能使用的变量(形参也是局部变量)

练习(掌握):

<script>
//第一种情况
    var obj={
    name : "karen"
    }
    function fn(n){
        //隐式代码: var n="karen"
        n="jack"//只改变了变量n的值,并未改变对象的name属性值
    }
        fn(obj.name) //obj.name取值然后再传入函数
    console.log(obj.name) //karen

//第二种情况
    var obj={
    name:"karen"
    }
    function fn(n){
        //隐式操作 var n = 引用
        n.name="jack" //引用的是同一块内存空间
    }
    fn(obj)//obj取值操作 取得是一个引用的对象
    console.log(obj.name) //jack

//第三种情况
    var obj={
    name:"karen"
    }
    function fn(n){
        //隐式操作 var n = 引用(是内存中的那个传入对象)
        n={name:"jack"}//赋值一个新的对象,不同对象指向不同的内存地址
    }
    fn(obj)//obj取值操作 取得是一个引用的对象
    console.log(obj.name) //karen
</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值