全局变量 : 作用于整个JS,全局可以调用
var k=9;局部变量
function text() {
k=8;//全局变量
console.log(k);}
text();
console.log(k);
两次输出结果都为 8 ;
局部变量: 只在自己的区域类可用,外部不能调用。
例: var a = 10;
function text(){
var a = 100;//局部变量 只在text这个函数中可以调用
console.log(a); //输出结果为 100;
}
text(); //输出结果为100;
console.log(a);//输出结果为 10;
例:var k=9;
function text(){
console.log(k);//第一次输出
var k=8;//局部变量
console.log(k);、、第二次输出
}
text();
console.log(k);//第三次输出
解析流程 var - text - text内部 - 输出第一次 k,此时 K 是没有定义的, 第一次输出 undefined - var k = 8;(局部变量) - 第二次输出 8;最后一次输出 则调用 var k = 9, 最后一次输出 9;
例: var k=9;
function text(){
var k;
console.log(k);//输出为undefined
k=8;
console.log(k);//输出结果8
}
text();
console.log(k);//输出结果9
提升只会针对 声明式的函数 ,表达式的函数 只在赋值的时候才会提升
值传递: 针对原始数据类型传递到函数方法体内
例: var x = 1, y = 2;
function fn( x, y ){
x = 2;
y = 3;
}
fn();
cosole.log(fn());
址传递:
(数组在内存中的表现形式: 数组 存与 栈(相当于储存了一个地址) 里面,而 数组中的元素 存于 堆 里面)
例 : var arr =[1,2,3];
function fn(arr){
arr[0] = 4;
arr[1] = 5;
arr[2] = 6;
}
console.log(fn(arr));//输出结果[4,5,6]