JS学习笔记Day5
一、变量的作用域
1.作用域:变量的作用范围
2.全局变量:变量在整个程序都是有效的(从程序开始到程序结束变量均有效)在函数体外部定义的变量都是全局变量;在函数体内部 没有用var定义的变量也有可能是全局变量
3.局部变量:变量只能在函数体的内部使用,跳出函数体后局部变量自动销毁 在函数体内部通过var定义的变量或函数的形式参数
4.作用域链:在函数体内部修改某个变量的值,如果修改的是局部变量,该变量也是局部的,如果修改的是全局变量,该变量就是全局变量
如何确定修改的是局部变量还是全局变量:向上查找,如果再函数体内部找到就返回,说明修改的是局部变量;如果在函数体内部没有查找到,就向函数体的外面继续查找,找到就返回,说明修改的就是全局变量
二、浏览器如何解析JS代码
1.浏览器解析JS代码的过程
1)第一步:预解析 找var和function
找到var相当于找到一个变量,为这个变量提前赋予一个undefined值
找到function也就相当于找到一个函数为这个含糊提前赋予这个函数块本身
注:预解析是,当遇到变量和函数重名时,保留函数
2)第二步:逐行解析代码
逐行解读代码时,如果遇到表达式,会将仓库中变量的值改变
2.变量的提升
在函数体内部使用var定义的变量,会将该变量的定义提升到函数的最顶端,但只提升定义,不赋值
function fn(){
alert(num);
var num = 90;
}
等价
function fn(){
var num;
alert(num);
num = 90;
}
三、函数的递归调用
递归:函数自己调用自己
递归的本质:实现循环 执行效率较低 反复开辟存储单元


四、函数和时间的关系
1.事件:对元素的某个操作
2.事件的种类:
1)鼠标事件:
onclick 单击
ondbclick 双击
onmouseover 滑入
onmouseout 滑出
onmouseenter 滑入
onmouseleave 滑出
onmousemove 移动
onmousedown 按下
onmouseup 抬起
2)键盘事件
onkeyup 抬起
onkeydown 按下
3)页面事件
onload 页面加载事件
4)表单事件(主要用于操作表单元素)
onfocus 获取焦点事件
onblur 失去焦点事件
onchange 改变事件
onsubmit 表单提交事件
3.事件用法
元素.事件名 = function(){
}
事件三要素:
事件源 名称名词
事件 动词
事件处理程序 函数
一般事件处理程序都是函数 事件都要依赖于函数执行
五、JS对页面元素的操作
第一步查找要操作的页面元素
1.样式操作:元素.style.样式 = “值”
2.属性操作(这里的属性指的是标签的输入 例如:img标签的src属性):元素.属性 = 值
3.内容操作:1)非表单内容:元素.innerHTML = “内容”
2)表单内容:元素.value = “值”
六、对象
对象就是一个整体,将多个变量组合起来,描述一个整体,就是对象
var obj = {
键 :值,
键 :值,
...
}
说明:键就是变量名,值可以是任意类型;如果值是一个函数,说明该键就是对象的方法;如果值不是函数,说明该键就是该对象的属性
对象的特征:所有的对象都有属性和方法(属性和方法可以自定义)
JS学习笔记Day5的更多相关文章
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- Vue.js学习笔记(2)vue-router
vue中vue-router的使用:
- JS 学习笔记--9---变量-作用域-内存相关
JS 中变量和其它语言中变量最大的区别就是,JS 是松散型语言,决定了它只是在某一个特定时间保存某一特定的值的一个名字而已.由于在定义变量的时候不需要显示规定必须保存某种类型的值,故变量的值以及保存的 ...
- WebGL three.js学习笔记 使用粒子系统模拟时空隧道(虫洞)
WebGL three.js学习笔记 使用粒子系统模拟时空隧道 本例的运行结果如图: 时空隧道demo演示 Demo地址:https://nsytsqdtn.github.io/demo/sprite ...
- WebGL three.js学习笔记 法向量网格材质MeshNormalMaterial的介绍和创建360度全景天空盒的方法
WebGL学习----Three.js学习笔记(5) 点击查看demo演示 Demo地址:https://nsytsqdtn.github.io/demo/360/360 简单网格材质 MeshNor ...
- WebGL three.js学习笔记 创建three.js代码的基本框架
WebGL学习----Three.js学习笔记(1) webgl介绍 WebGL是一种3D绘图协议,它把JavaScript和OpenGL ES 2.0结合在一起,通过增加OpenGL ES 2.0的 ...
- vue.js 学习笔记3——TypeScript
目录 vue.js 学习笔记3--TypeScript 工具 基础类型 数组 元组 枚举 字面量 接口 类类型 类类型要素 函数 函数参数 this对象和类型 重载 迭代器 Symbol.iterat ...
- 2019-4-29 js学习笔记
js学习笔记一:js数据类型 1:基本数据类型 number类型(整数,小数) String类型 boolean类型 NaN类型其实是一个nu ...
- 一点感悟:《Node.js学习笔记》star数突破1000+
写作背景 笔者前年开始撰写的<Node.js学习笔记> github star 数突破了1000,算是个里程碑吧. 从第一次提交(2016.11.03)到现在,1年半过去了.突然有些感慨, ...
随机推荐
- Windows7 (Win7) 配置Windows Update 时失败 正在还原更改
用WinPE启动后,进入Windows\WinSxS目录,想办法删掉pending.xml和reboot.xml
- Sql server 系统表
sql server系统表详细说明 SQL Server 用户库中系统表说明 名称 说明 备注 syscolumns 每个表和视图中的每列在表中占一行,存储过程中的每个参数在表中也占一行. sys ...
- 4.namespace
命名空间( namespace)是 Linux 内核的一个强大特性,为容器虚拟化的实现带来极大便 利. 利用这一特性,每个容器都可以拥有自己单独的命名空间,运行在其中的应用都像是在 独立的操作系统环境 ...
- Web API2 使用EF Code Migrations to Seed DB
console Enable-Migrations 运行这个命令,添加一个文件夹Migrations,Configuration.cs在这文件夹中 打开 Configuration.cs file. ...
- winFormToMysql&&几个控件的数据绑定
运行图: 代码: private void button1_Click(object sender, EventArgs e) { string str = "database=csharp ...
- HTML5-Audio-基础篇
播放音频文件 //control属性添加播放.暂停和音量控件<audio controls> <source src="horse.ogg" type=" ...
- codeforces 1065F Up and Down the Tree
题目链接:codeforces 1065F Up and Down the Tree 题意:给出一棵树的节点数\(n\)以及一次移动的最大距离\(k\),现在有一个标记在根节点1处,每一次可以进行一下 ...
- MS-DOS 6.22 +Vim+masm 汇编环境
安装vim 个人习惯用 vim 编辑,因此稍微折腾了一下.不用这么麻烦直接用 edit 编辑也是可以的. 原来安装的 MS-DOS 7.10 虚拟机安装好vim后无法运行,所以改用了 MS-DOS 6 ...
- HTML head标签内部常用设置
HTML head标签内部常用设置 在网页html文件中,head标签里面通常放置的代码是用来对网页进行相关设置的内容.下面就是对这些内容的介绍. meta标签的设置 在网页中,meta标签最常用的设 ...
- Codeforces Round #520
占个坑慢慢填 A ()[http://codeforces.com/contest/1062/problem/A] 题意:现在有一个长度为n的严格上升正整数序列 每个数的取值在[1, 1000] 现在 ...