变量作用域
Posted 好_快
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了变量作用域相关的知识,希望对你有一定的参考价值。
第二题 引用类型作用域
题目
function Person(name, age)
this.name = name;
this.age = age;
function func1(person)
person.name = "liSi";
person = new Person("wangWu", 20);
var person = new Person("zhangSan", 10);
console.log(person.name);
func1(person);
console.log(person.name);
分析
//构造函数
function Person(name, age)
this.name = name;
this.age = age;
//普通函数
function func1(person)
/**
* 0、var person = personObj;
* 1、person 为函数作用域内的局部变量,personObj 为全局变量
* 2、person 指向 personObj
* 3、操作 person 的属性和方法等于操作 personObj 属性和方法
* 4、全局变量personObj的name属性被修改为liSi
*/
person.name = "liSi";
/*
* 局部变量 person 指向了新的 Person 示例对象,不再是 personObj 对象
* */
person = new Person("wangWu", 20);
person.name = "zhaoLiu";
var personObj = new Person("zhangSan", 10);
console.log(personObj.name); //直接打印person.name属性:zhangSan
func1(personObj);
console.log(personObj.name); //person.name属性已经被修改:liSi
输出结果
zhangSan
liSi
第一题 值类型作用域
题目
var num1 = 1;
var num2 = 2;
function func1(num, num1)
num = 10;
num1 = 20;
num2 = 30;
console.log(num1);
console.log(num2);
console.log(num);
func1(num1, num2);
console.log(num1);
console.log(num2);
console.log(num);
分析
var num1 = 1;
var num2 = 2;
function func1(num, num1)
// var num; //函数作用域局部变量
// var num1; //函数作用域局部变量
num = 10; //局部变量赋值
num1 = 20; //局部变量赋值
num2 = 30; //函数作用域没有,到全局作用域寻找,全局变量,值被修改为20
console.log(num1); //局部变量:20
console.log(num2); //全局变量:30
console.log(num); //局部变量:10
func1(num1, num2);
console.log(num1); //全局变量:1
console.log(num2); //全局变量:30
console.log(num); //报错 Uncaught ReferenceError: num is not defined
输出结果
20
30
10
1
30
Uncaught ReferenceError: num is not defined
代码
以上是关于变量作用域的主要内容,如果未能解决你的问题,请参考以下文章