一.JavaScript变量创建到访问赋值的过程 创建 create/declare 初始化 initialize 赋值 assign 1.函数的提升 // 函数这种变量声明,首先会创建变量,再初始化,最后开始执行代码 doSth(); function doSth(){ var a = 1; var b = 2; console.log(a,b); } 1.找到function声明的变量,在环境中创建这些变量 2.初始化这些变量,本例中将doSth(){ var a = 1; var b =…
1 .介绍 //定义类 class Point { constructor(x, y) { this.x = x; this.y = y; } toString() { return '(' + this.x + ', ' + this.y + ')'; } } Point类除了构造方法,还定义了一个toString方法.注意,定义"类"的方法的时候,前面不需要加上function这个关键字,直接把函数定义放进去了就可以了.另外,方法之间不需要逗号分隔,加了会报错. //类的数据类型就…
作用域 域,表示的是一个范围,作用域,就是作用范围. 作用域说明的是一个变量可以在什么地方被使用,什么地方不能被使用. 块级作用域 JavaScript中没有块级作用域 { var num = 123; { console.log( num ); } } console.log( num ); 上面这段代码在JavaScript中是不会报错的,但是在其他的编程语言中(C#.C.JAVA)会报错. 这是因为,在JavaScript中没有块级作用域,使用{}标记出来的代码块中声明的变量num,是可以…
在ES6之前,JavaScript没有块级作用域(一对花括号{}即为一个块级作用域),只有全局作用域和函数作用域.变量提升即将变量声明提升到它所在作用域的最开始的部分. JS的解析过程分为两个阶段:预编译期(预处理)与执行期.  预编译期JS会对代码块中的所有声明的变量和函数进行处理(类似与C语言的编译),但需要注意的是此时处理函数的只是声明式函数,而且变量也只是进行了声明但未进行初始化以及赋值. console.log(a);//undefined if (!("a" in wind…
hoisting机制:javascript的变量声明具有hoisting机制,JavaScript引擎在执行的时候,会把所有变量的声明都提升到当前作用域的最前面. 知识点一:javascript是没有块级作用域的.函数是JavaScript中唯一拥有自身作用域的结构 知识点二:变量声明宣称一个名字的存在,变量定义则为这个名字分配存储空间,而变量初始化则是为名字分配的存储空间赋初值 知识点三:javascript中一个名字(name)以四种方式进入作用域(scope),其优先级顺序如下:     …
根据官方书籍<你不知道的javascript>(上卷)中写道: "函数会首先被提升,然后才是变量". 例子: console.log(foo); function foo(){ console.log("函数声明"); } var foo = "变量"; 输出为: function foo(){ console.log("函数声明"); } 代码实际是: function foo(){ console.log(&q…
let关键字 1.let关键字声明的变量仅仅在自己的块级作用域内起作用,出了块级作用域就不起作用了: var arr2 = []; for (let index = 0; index < 10; index++) { arr2[index] = function () { console.log(index); } } arr2[6](); // 结果为:6 此结果就是我们想要得到的结果: 任何一对花括号“{ }”中的语句都属于一个作用域块,在花括号里面使用let定义的所有的变量在花括号外都是不…
本篇主要介绍var关键字.变量的undefined和null状态.异常处理.命名规范. 目录 1. var 关键字:介绍var关键字的使用. 2. 变量的状态:介绍变量的未定义.已定义未赋值.已定义已赋值 三种状态. 3. JS异常:介绍对JS异常的处理. 4. 命名规范:介绍Js的基本命名规范. 1. var 关键字 1.1 作用 声明作用:如声明个变量. 1.2 语法 var c = 1; 1.3 省略var 在javascript中,若省略var关键字而直接赋值,那么这个变量为全局变量,哪…
上一讲介绍了static和extern对函数的作用,static用来定义一个内部函数,不允许其他文件访问:extern用来定义和声明一个外部函数,允许其他文件访问.static和extern对变量也有作用,不过跟函数有点差别. C语言和Java都有全局变量的概念,但是它们的用法还是有些差别的. 一.在Java中,全局变量的定义没有严格的位置规定 全局变量可以定义在类的最前面,也可以定义在类的最尾端,也就说一个方法可以访问在它之后定义的变量. 可以看到,第4行定义的test方法可以访问第8行定义的…
1. 变量声明提升 先看以下代码: 1)var in_window = "a" in window; console.log(in_window); 2)var in_window = "a" in window; console.log(in_window); if(!("a" in window)) { var a = 1; } 3)var a; var in_window = "a" in window; console…