作用域与变量声明|JS笔记

61 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第20天,点击查看活动详情

文章概览

  • 作用域
  • 变量声明

作用域

 作用域是指一个变量的有效范围,JS中有两种作用域:

  • 全局作用域:直接在script标签中编写的代码,其变量在全局起作用;全局变量在打开页面时创建,当页面关闭时被销毁。全局作用域中有一个全局对象window,代表一个浏览器的窗口时,可以直接使用;在全局作用域中,创建的变量都会作为window对象的属性被保存。
  • 函数作用域:当函数被调用时,就会创建函数的作用域,当函数执行完成后,函数的作用域会被销毁。
  • 每当调用一个函数时,将会创建一个新的函数作用域,二者之间是相互独立的。
  • 在函数作用域中可以访问到全局作用域的变量,但是在全局作用域中并不能访问到函数作用域中的变量。
  • 在函数作用域操作一个变量时,首先会在自身的函数作用域中查找变量,如果有就使用自身作用域中的变量,如果没有就向上检索,使用全局作用域,如果在全局中仍然没有找到变量,就会报错:ReferenceError。
  • 在函数中,不适用var关键字声明的变量都会成为全局变量。

变量声明

变量声明的前提

  • 使用var关键字声明的变量将会在所有代码执行之前被声明,但是,当声明变量时不适用var关键字,那么变量就不会被声明。

函数声明的前提

  • 当使用函数声明形式创建的函数function函数(){},它会在所有代码执行之前就被创建,因此开发者可以在函数声明前来调用函数。