JS基础学习日志之全局、函数作用域 / 声明提前 / Debug

目标:2019年结束前可以自己上手写出一个完整项目.
计划:目前先学完《尚硅谷JavaScript》140P,抽空多看HTML&CSS,之后再计划别的.
习惯:每天至少可以学1P.

2019-10-31

《尚硅谷JavaScript》学习笔记
P58(全局作用域、声明提前)、P59(函数作用域)、P60(debug调试)

还是需要再多看几次,多打几次加深理解

一、作用域:作用域指一个变量的作用范围
1、JS中包括两种作用域:
-全局作用域(函数作用域见1-4)
a.直接编写在script标签中的JS代码,该JS代码为全局作用域;
b.全局作用域在页面打开时创建,在页面关闭时销毁;
c.在全局作用域中,存在一个全局对象window,代表浏览器窗口,由浏览器创建,可直接使用。
console.log(window)//[object window]
d.在全局作用域中,创建的变量都会作为window对象的属性保存,函数都会作为方法保存。
e.全局作用域中的变量,都为全局变量,在页面中任意位置都可以访问到。
f.在全局作用域中,无法访问到函数作用域;函数作用域中,可以访问到全局作用域中的全局变量。
var a = 10;
console.log(window.a) = (a)
function fun() {
alert(123456);
}
window.fun() =fun()

2、变量的声明提前:
-使用var关键字声明的变量,会在所有代码执行之前被声明。
console.log(a);
var a=123;
执行返回a = undefined
-声明变量时,没有使用var,则变量不会被声明提前
console.log(a);
a=123;
执行会报错

3、函数的声明提前
-使用函数声明形式创建的函数,会在所有代码执行前就被创建,会被优先解析,可在函数声明前调用函数。
fun()
function fun() ={
}//函数声明
-使用函数表达式创建的函数,不会被声明提前。
fun2()
var fun2 = function(){
};//函数表达式

4、函数作用域:
a.调用函数时,创建函数作用域,函数执行完毕后,函数作用域销毁。
b.每调用一次,函数都会创建一个新的函数作用域,各函数作用域互相独立。
c.在函数作用域中,可以访问到全局作用域中的全局变量;在全局作用域中,无法访问到函数作用域。
d.就近原则:函数作用域中操作变量时,会先在自身作用域就寻找,有则直接使用,没有则会一直向外一级(函数、全局)作用域中寻找,直到找到,如未在最外层级作用域(全局作用域)中找到该变量,则报错Reference。
e.在函数作用域中,可以使用window.xxx / xxx(),来访问全局作用域中的全局变量。
f.在函数作用域中,也存在声明提前,
-使用var关键字声明的变量,会在该函数中所有代码执行之前被声明。
-使用函数声明形式创建的函数,会在该函数中所有代码执行之前被创建。
-在函数中,不使用var声明的变量,都会被设置为全局变量。
var a = 10;
function fun(){
var a = "函数作用域中的a";
var b =20;
console.log(a); // a = "函数作用域中的a"
}
fun()
console.log(b);
console.log(a);//a = 10;a = "函数作用域中的a";
5、习题:在本子上做的,五道错四道,重新理一遍才清楚了。

二、Debug调试
1、使用工具:chrome浏览器
2、调试步骤:
-将代码在浏览器中执行;
-进入浏览器,打开F12;
-进入【source】中找到运行的对应页面;
-将想要查看的语句设置断点(breakpoints);
-复制 变量 在最右侧Watch中添加监控;


设置断点、添加监控

单步跳过、查看信息

——————————————2019-10-31-23:30—————————————

你可能感兴趣的:(JS基础学习日志之全局、函数作用域 / 声明提前 / Debug)