结尾
学习html5、css、javascript这些基础知识,学习的渠道很多,就不多说了,例如,一些其他的优秀博客。但是本人觉得看书也很必要,可以节省很多时间,常见的javascript的书,例如:javascript的高级程序设计,是每位前端工程师必不可少的一本书,边看边用,了解js的一些基本知识,基本上很全面了,如果有时间可以读一些,js性能相关的书籍,以及设计者模式,在实践中都会用的到。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
- JavaScript中,使用一个变量之前,先用var关键字声明它,变量如果没有赋值,则初始化值为undefined
- 声明变量时,如果不写var,则会被定义为全局变量,而且并不是在函数内部写了变量,这个变量就属于这个函数的作用域;必须用var来声明,这个变量才会属于这个作用域
作用域
- 一个变量的作用域就是变量起作用的范围区间。在ES5中,js只有两种形式的作用域:全局作用域和函数作用域
- 函数允许访问函数外的变量,代码中只有函数才可以限定作用域
- 当前函数作用域中的变量能覆盖全局作用域中的同名变量
- 分析作用域首先理解变量提升规则
变量提升
- var关键字声明的变量,无论实际声明的位置在何处,都会被视为声明在函数的顶部(如果声明不在任意函数内,则视为在全局作用域的顶部)
- JavaScript引擎的工作方式是,先预解析代码, 获取所有被声明的变量和函数声明,然后再一行一行地运行,这就使所有变量声明的语句,都会被提升到代码的头部,这就是变量提升
console.log(a); //undefined
var a = 1;
console.log(a); // 1
上面代码首先在控制台显示未声明的变量,本来是错误的做法但是没有报错.因为JS的变量提升.真正运行的是以下代码
var a ;
console.log(a);
a = 1;
console.log(a);
在ES5中,js只有两种形式的作用域:全局作用域和函数作用域
全局作用域其实是全局对象的作用域,任意地方都可以访问到(如果没有被函数作用域覆盖)
var i = 2; //全局变量,全局作用域
function outer(){ //定义外部函数
console.log(i); //访问全局变量 2
function inner(){ //定义内部函数
console.log(i); //访问全局函数 2
}
inner();
}
outer();
console.log(i); //2
函数内部定义变量时,如果不写var,比如下面的x = 8,则会被定义为全局变量,作用域为全局作用域,在声明语句后的任何位置都可以访问,否则为局部变量,则作用域为函数作用域.
function getResult(){ //定义外部函数
var c = 4; //定义局部变量
function open(){ //定义内部函数
x = 8;
var y = 9;
console.log(c); // 访问函数外部的局部变量 4
}
open();
console.log(x);
//console.log(y); //局部变量.访问不了,报错未定义
}
getResult();
console.log(x);
//console.log(y); //局部变量.访问不了,报错未定义
结尾
学习html5、css、javascript这些基础知识,学习的渠道很多,就不多说了,例如,一些其他的优秀博客。但是本人觉得看书也很必要,可以节省很多时间,常见的javascript的书,例如:javascript的高级程序设计,是每位前端工程师必不可少的一本书,边看边用,了解js的一些基本知识,基本上很全面了,如果有时间可以读一些,js性能相关的书籍,以及设计者模式,在实践中都会用的到。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)**
[外链图片转存中…(img-mAFLqLWF-1715796934909)]