JS 学习之作用域和变量解析

1 js 作用域跟C,java等语言的不同的地方:

1) 没有块级作用域

注意,若局部作用域var 了一个跟全局作用域相同变量名的变量,则局部作用域里面无法引用全局作用域的变量。

2) 局部作用域变量可以与全局作用域变量同名,但是前面要加var,注意,此后2者一点关系都没有,可以看作是一山不可容的二虎,两只老虎两只老虎。

2 变量解析

JS 变量解析涉及其词法分析的东西,具体的架构(自己的理解)如下:

执行环境

作用域链(2种,全局和全局局部)

局部作用域和全局作用域

变 量

后续时间具体阐述补全。

望资深前辈发现错误立马指明,我可修改,以避免延误别人也延误自己。

时间: 2024-11-08 23:30:23

JS 学习之作用域和变量解析的相关文章

JS学习之作用域

JS中的作用域有两种: 1.window/global 全局作用域 2.函数执行时形成的私有作用域 栈内存(作用域):js代码执行的那个环境:存储基本数据类型值:堆内存:在js中,对于引用数据类型来说,首先会开辟一个新的内存空间,然后把("属性名:属性值"/"函数体中的代码字符串")存储到这个空间中,最后把空间的地址给相关的变量,这个新开辟的这个内存空间称之为"堆内存".堆内存的作用:存储引用数据类型值的 一.全局作用域 在浏览器加载我们HTML

js学习笔记1(变量、作用域、内存)

写在前面,舍弃叽叽歪歪,只做学习笔记,认真踏实. 学习书籍:javascript高级程序设计3版. 章节4.1 基本类型和引用类型 1.基本类型在内存中占据固定大小的空间,所以保存在栈内存中. 2.从一个变量向另一个变量复制基本类型的值的时候,会在栈中保存另一个副本. 3.引用类型的值是对象,保存在堆内存中. 4.包含引用类型的值的变量,包含的不是对象本身,而是指向该对象的在堆内存中的位置的指针. 5.确定一个值是哪一种基本类型,可以用typeof.确定一个对象是哪一种引用类型,可以使用inst

VBScript学习笔记 - 作用域,变量显式声明

<p>在脚本主体中声明或创建一个变量时,默认是全局作用域(global scope)的:而在函数或子例程中定义的变量,默认是私有作用域(private scope)的.</p><p>要显式声明变量的作用域,可用public语句和private语句</p><div class="cnblogs_code" style="border-top: #cccccc 1px solid; border-right: #cccccc

JS基础知识回顾:变量、作用域和内存问题

ECMAScript变量可能包含两种不同数据类型的值:基本类型值和引用类型值. 基本类型值指的是简单的数据段,而引用类型值指的是那些可能由多个值构成的对象. 引用类型的值是保存在内存中的对象,与其他语言不同,JavaScript不允许直接访问内存中的位置,也就是说不能直接操作对象的内存空间. 在操作对象时,实际上是在操作对象的引用而不是实际的对象. 在很多语言中,字符串以对象的形式来表示,因此被认为是引用类型的,ECMAScript放弃了这一传统. 定义基本类型值和引用类型值的方式是类似的:创建

js学习笔记01-函数,作用域,闭包

${var} //变量的占位符, ${}里边 依旧是js,字符串拼接 var str1 = "Hello"; var str2 = "World"; console.log("say: "+str1+" "+str2+"!"); console.log(`say: ${str1} ${str2}!`); 函数function 像处理(字符串.数组或数字)一样来处理函数1)存储在变量中.2)从一个函数返回.3

小白学js第六天之代码规范,作用域以及预解析

目录 代码规范 命名规范 变量规范 注释规范 空格规范 换行规范 作用域 全局变量 局部变量 块级作用域 作用域链 预解析 什么是预解析 变量提升 此篇木有脑图,嘻嘻 代码规范 命名规范 变量.函数的命名必须要有意义 变量一般用名词 函数一般用动词 变量规范 操作符前后要有空格 var name = 'zs'; 注释规范 // 这里是注释 空格规范 if (true) { } for(var i = 0; i < n; i++ ) { } 换行规范 var arr = [1, 2, 3, 4];

JS学习之函数的作用域

作用域 变量或者函数可访问的一个范围,以函数来划分,一个函数块就是一个作用域.一 全局作用域 全局:整个文档 变量或者函数在函数外面声明,那它们就是全局变量或者全局函数,在这个页面的任何地方都可以访问的到. 声明全局作用域的方法: 1.把变量或者函数放在函数外面声明 2.变量不用var声明,直接给变量赋值:不管在函数外还是函数内声明 全局变量在任何地方都可以访问的到是因为全局变量是window的一个属性,window是一个全局对象,本身在页面中的任何位置都可以访问 1 var a=10; 2 c

JS学习之路,菜鸟总结的注意事项及错误更正

JavaScript 是一种面向对象的动态语言,它的语法来源于 Java 和 C,所以这两种语言的许多语法特性同样适 用于 JavaScript.需要注意的一个主要区别是 JavaScript 不支持类,类这一概念在 JavaScript 通过对象原型 (object prototype)得到延续(有关 ES6 类的内容参考这里Classes).另一个主要区别是 JavaScript 中的 函数也是对象,JavaScript 允许函数在包含可执行代码的同时,能像其他对象一样被传递.1,scrip

JS学习之注意事项及错误更正

JavaScript 是一种面向对象的动态语言,它的语法来源于 Java 和 C,所以这两种语言的许多语法特性同样 适用于 JavaScript.需要注意的一个主要区别是 JavaScript 不支持类,类这一概念在 JavaScript 通过对象 原型(object prototype)得到延续(有关 ES6 类的内容参考这里Classes).另一个主要区别是 JavaScript 中的函数也是对象,JavaScript 允许函数在包含可执行代码的同时,能像其他对象一样被传递.1,script