JavaScript 学习笔记之变量及其作用域_基础知识
程序员文章站
2022-04-15 19:30:10
...
一、变量
test();
function test(){
var firstDemo="hello";//定义局部变量
alert(firstDemo);//hello
}
test();
function test(){
var firstDemo="hello";//定义局部变量firstDemo
}
alert(firstDemo);//报错,firstDemo is not define
ECMAscript变量是松散型变量,所谓松散型变量,就是变量名称可以保存任何类型的数据,每个变量仅仅是一个用于保存值的占位符。
定义:var firstDemo;
二、变量的作用域
2.1基本概念
使用var 定义变量:定义该变量的作用域的局部变量,这种定义变量的方法也被成为显式声明。
这么说不理解的话可以看看下面这个简单粗暴的例子:
复制代码 代码如下:
test();
function test(){
var firstDemo="hello";//定义局部变量
alert(firstDemo);//hello
}
test();
function test(){
var firstDemo="hello";//定义局部变量firstDemo
}
alert(firstDemo);//报错,firstDemo is not define
由以上两个例子可以看出,如果在一个函数中使用var 定义一个变量,那么该变量在函数退出后会被销毁。
省略var 定义变量:只要调用一次定义该变量的函数,全局范围内都可访问该变量。这种定义变量的方法也被成为隐式声明
复制代码 代码如下:
tips:显式声明的变量是在预编译时就已经编译到调用对象中了,(例如var t=1;预编译时执行var t;解释时执行t=1;)不同于隐式声明变量在解释时才被定义为全局变量。
弄清楚变量的作用域,可以帮助我们思考如何合理声明变量,这样既减小了不必要的内存开销,同时能很大程度地避免变量重复定义而覆盖先前定义的变量所造成的麻烦。
2.2作用域分析
复制代码 代码如下:
输出结果:0 1 0
复制代码 代码如下:
输出结果:
A、0 0 1 0
B、0 undefined 1 0
C、0 报错i is not defined
各位可以猜测一下结果是哪一个,原因会在留言里详解。
以上就是本文的全部内容了,简单的说任何程序语言中变量的作用域都是一个很关键的细节。JS中变量的作用域相对与JAVA、C这类语言显得更*,一个很大的特征就是JS变量没有块级作用域,函数中的变量在整个函数都中有效。
推荐阅读
-
javascript基础学习之*变量与作用域链
-
深入理解ES6学习笔记之块级作用域绑定
-
人工智能学习笔记005-变量与函数作用域
-
荐 javascript从入门到跑路-----小文的js学习笔记(18 —1)------作用域以及作用域链
-
《JavaScript高级程序设计(第三版)》读书笔记01 变量、作用域和内存问题
-
前端综合学习笔记---变量类型、原型链、作用域和闭包
-
javascript基础学习之*变量与作用域链
-
GoLang 学习笔记(七)-- 声明变量风格,二级指针,隐式作用域
-
前端学习笔记三:JavaScript(2)变量的分类和作用域+利用浏览器调试模式测试+HTML事件+表示特殊字符(+运算符+各种循环和条件语句【略】)
-
php 变量作用域学习笔记分享