JavaScript学习第五天笔记(做用域)

做用域

概述

变量和函数都具备做用域 做用域就是变量和函数的可被访问的范围 控制着变量和函数的可见性和生命周期。
变量的做用域可被分为全局做用域和局部做用域(函数做用域) 若是变量是被定义在全局做用域的话 在JavaScript代码中的任何位置均可以访问该变量 若是变量被定义在指定函数内部 在JavaScript代码中只能在该函数内部访问该变量。
函数的做用域也可被分为全局做用域和局部做用域(函数做用域) 被定义在指定函数内部的函数被称为局部函数或内部函数。函数

全局变量

在全部函数以外声明的变量,叫作全局变量,由于他可被当前文档中的其余代码所访问。code

局部变量

在函数内部声明的变量被成为局部变量,它只能在函数的内部进行访问。生命周期

声明提早

JavaScript变量的另外一个特别之处是,能够小猴声明的变量,而不会引起异常,这一律念被称为生命提早。
示例代码ip

console.log(num);// undefined
var num = 100;/* 定义全局变量 */
/* 定义函数 */
function fun(){
    // 全局变量与局部变量同名时 - 在当前函数做用域中只能访问局部变量
    console.log(num);// undefined

    var num = 200;/* 定义局部变量 */
    // 就近原则
    console.log(num);// 200
}
/* 调用函数 */
fun();
// 局部变量在全局做用域中没法访问 - 只能访问全局变量
console.log(num);// 100

按置传递

按置传递就是指将实参变量的值复制一份副本给函数的形参变量。JavaScript中为函数传递参数时,都是按值传递的。若是向函数传递的参数时原始类型数据,则在函数中修稿参数变量的值,不会影响外部实参的变量。
示例代码作用域

var num = 100;/* 定义一个全局变量 */
function fun(num){
    num++;
    console.log('函数内部的值: ' + num);// 101
}
fun(num);/* 实参 */
/* 调用指定全局变量 */
console.log('全局做用域的值: ' + num);// 100 101


var v = 200;
function fn(){
    v++;
}
fn();
console.log(v);// 201
相关文章
相关标签/搜索