键盘事件:
keydown 键盘的按下事件 不停触发
keyup
keypress 键盘的按下事件 不停触发 alt shift contrl 功能键
keycode 被废弃 获取键盘上键值的字符编码
code 直接获取键值
绑定在表单元素 window document
表单事件:
focus
bulr
submit
input 实时检测
change 失去焦点检测
鼠标事件
移入移出
冒泡:
mouseover
mouseout
e.bubbls
BOM
innerWidth 、innerHeight 窗口可视区的宽高
pageXoffset pageYoffset 横纵滚动条的偏移量
offsetTop
offsetLeft
offsetWidth
offsetHeight 得到的是数字类型 直接参与运算
Navigator
- appName ‘netSpace’
- userAgent 放在https请求头中的信息
- onLine 是否在线 联网
History
-
length 历史记录的长度
-
back() 回退
-
forward() 前进
-
go() 正值 负值 0刷新
location
// https://developer.mozilla.org/zh-CN/docs/Web/API/Location
https 超文本传输协议 加密协议 ssh
http 默认端口号:8080
udp
ftp
developer.mozilla.org 域名 ip地址 DNS
zh-CN/docs/Web/API/Location 文件路径
// http://127.0.0.1:5500/01.html
属性
-
protocol 当前url地址的协议部分
-
host url的域名部分
-
port 端口号
-
search 获取url中参数部分
-
pathname url中的文件路径
-
href 获取或者修改整个url地址
注意:以上任意一个属性修改,地址栏检测到都会发生改变
方法
- assign() 让当前窗口加载最新的资源 参数 新网页的地址
- reload() 重载 默认false 从浏览器的缓存中去拿 true 从服务器中去获取
- replace() 替换当前页面为新页面 无法回退
get 传递参数 会直接显示在地址栏中
post 传递参数 显示在请求信息中
函数表达式
var fn = function(){
}
函数表达式中赋值号右边的函数名字没有实际意义 ,所以可以省略不写 匿名函数
表达式创建函数 不会提前声明,必须在函数赋值给变量之后,才能正常调用
立即执行函数
(function(){
})()
(function(){}())
+function(){}()
-function(){}()
!function(){}()
~function(){}()
操作数 数据 值 1 ture function() obj
操作符 运算符
由操作数和操作符组成的一个式子 表达式
js运行三部曲
- 语法分析
通篇扫描代码 看代码中有没有语法错误 - 预编译(预解析)
- 全局预编译
- 创建一个(GO Golabl Object)对象
- 分析变量声明,如果GO对象上没有这个属性名,则添加属性,并且值为undefined;如果GO对象上已经存在这个属性,不做任何改变
- 分析函数的声明,如果GO对象上没有这个属性名,则添加属性,值为函数体;如果有,则覆盖
- 函数预编译
- 函数在执行的那一刻,会创建一个对象(AO Active Object 活动对象)
- 函数声明的形参,作为AO对象的属性名,值是实参的值,如果没有传值,值为undefined
- 分析函数声明的变量,如果AO对象上没有这个属性名,则添加属性,并且值为undefined
如果AO对象上已经存在这个属性,不做任何改变 - 分析函数声明,如果AO对象上没有这个属性名,则添加属性,值为函数体;如果有,则覆盖
- 全局预编译
- 逐行执行代码
浏览器按照预编译分析出来的AO,逐行执行代码
注意:预编译过程中声明的变量和函数 在执行代码阶段不需要再次声明