视觉艺术

JavaScript学习笔记(五)-- 函数进阶

2020-04-03  本文已影响0人  千锋HTML5学院

作用域(重点)

全局作用域

// 下面两个变量都是存在在全局作用域下面的,都是可以在任意地方使用的
var num = 100
var num2 = 200

局部作用域

// 这个 num 是一个全局作用域下的变量 在任何地方都可以使用
var num = 100

function fn() {
  // 下面这个变量就是一个 fn 局部作用域内部的变量
  // 只能在 fn 函数内部使用
  var num2 = 200
}

fn()

变量使用规则(重点)

访问规则

var num = 100

function fn() {
  var num2 = 200
  
  function fun() {
    var num3 = 300
    
    console.log(num3) // 自己作用域内有,拿过来用
    console.log(num2) // 自己作用域内没有,就去上一级,就是 fn 的作用域里面找,发现有,拿过来用
    console.log(num) // 自己这没有,去上一级 fn 那里也没有,再上一级到全局作用域,发现有,直接用
    console.log(a) // 自己没有,一级一级找上去到全局都没有,就会报错
  }
  
  fun()
}

fn()
function fn() {
  var num = 100
}
fn()

console.log(num) // 发现自己作用域没有,自己就是全局作用域,没有再上一级了,直接报错

赋值规则

function fn() {
  num = 100
}
fn()

// fn 调用以后,要给 num 赋值
// 查看自己的作用域内部没有 num 变量
// 就会向上一级查找
// 上一级就是全局作用域,发现依旧没有
// 那么就会把 num 定义为全局的变量,并为其赋值
// 所以 fn() 以后,全局就有了一个变量叫做 num 并且值是 100
console.log(num) // 100

 
 
 
 
本文转自知乎号千锋HTML5学院

上一篇 下一篇

猜你喜欢

热点阅读