在es5中 函数的代码块内部的代码可以访问形参变量 也可以访问外部的变量(全局) 就近优先
函数外部的代码不能直接访问函数内部的变量
作用域: 指一个变量它在哪些代码范围能够被使用 这些
地方就是变量的作用域
var a = 20;
function fn(a) {
// 隐式代码 var a = 10;
console.log(a);
};
fn(10); // 10
var a = 30;
function fn() {
var a = 20;
};
fn();
console.log(a); // 30
全局变量: 变量会在程序运行时把它设置为window对象的属性
var a = 20;
function fn() {
a = 40;
};
fn();
console.log(a); // 40
function fm() {
a = 60;
};
fm();
console.log(a); // 60
a = 100;
console.log(a); // 100
局部变量就是函数内部能使用 外部不能使用的变量
function fn(a) {
var b = 20;
console.log(a, b);
};
fn(100); // 100 20
console.log(a); // 报错
console.log(b); // 报错
var obj = {
name: "karen"
};
function fn(n) {
// 隐式代码 var n = "karen";
n = "jack"
};
fn(obj.name); // obj.name 取值然后再传入函数
console.log(obj.name); // karen
var obj = {
name: "karen"
};
function fn(n) {
n.name = "jack"
};
fn(obj); // obj取值操作 取的是一个引用的对象
console.log(obj.name); // jack