console.log() 在浏览器中显示JS变量值。大部分浏览器可使用F12启动调试
字面量:一个常量
JS使用Unicode字符集
代码拆行:可以在为本字符串中使用”/"对代码进行换行
重新声明JavaScript变量,该变量的值不会丢失
Undefined表示变量不含有值
null可用来清空变量值 //变量的值等于null说明变量中存的是null,和undefined不同
声明新变量时,可以使用new来声明其类型
JS变量均为对象,声明一个变量时,就创建了一个新的对象
对象:
定义 var object={ key : "value" };
对象属性:键值对
对象方法:创建 methodName:function { code lines };
访问 objectName.methodeName( )
JS变量的声明周期:从被声明开始
局部变量在函数运行以后被删除,
全局变量在页面关闭后被删除
如果把值赋给尚未声明的变量,该变量将被自动作为全局变量声明
HTML中的全局变量:
html中全局变量是window对象:所有数据变量都属于window对象
字符串
可以使用索引位置来访问字符串中的每个字符 (个人理解内部实现可能是数组把?)
可以使用引号,但不要与外层引号相同
可以使用转义字符 /' /''
字符串长度:length属性
尽量不要创建String对象
字符串的常用属性
constructor | 返回创建字符串属性的函数 |
prototype | 允许向对象添加属性和方法 |
字符串的常用方法
charAt()、charCodeAt() | 指定位置的字符、Unicode值 |
concat() | 字符串连接 |
fromCharCode() | 转换为Unicode值 |
indexOf()lastIndexOf() | 返回指定字符的索引位置 |
localeCompare() | 用本地特定顺序比较字符串 |
match() | 正则匹配 |
replace() | 正则替换 |
search() | 正则检索 |
slice() | 提取片段,返回提取部分 |
split() | 分隔 |
substr() | 取子串,a开始b个 |
substring() | 去淄川,a到b |
toLocaleLowerCase()
toLocaleUpperCase()
toLowerCase()
toUpperCase()
| 大小写转换 |
toString | 返回字符串对象值 |
trim() | 移除首尾空格 |
valueof() | 返回某个字符串对象的原始值 |
循环
For/In循环,用于遍历对象的属性
ytpeof、null、undefined
typeof 数组 返回object
typeof null 返回object,null代表一个空对象引用
undefined是一个没有设置值的变量
任何变量都可通过设置undefined来清空,清空后的类型是undefined
typeof undfined 返回undefined
typeof null 返回object
null===undefined 返回false
null==undefined 返回true
JS有五种数据类型:String,number,boolean,object,function
三种对象类型:Object、Date、Array
两种不含值类型:null、undefined
NaN的数据类型是number
constructor属性
返回所有JS变量的构造函数,可用constructor来区别对象是否是Array或Date类型,即判断返回的结果中是否包含字符串Array或Date
类型转换
数字转字符串 string()或Number.toString()
布尔转字符串 string()或true/false.toString()
日期转字符串 string()或Date().toString
字符串转数字 Number()空会转成0,如果是非数字会转成NaN
布尔转数字 Number(false)返回0 Number(true)返回 1
日期转数字 Number()或Date.getTime()
尝试输出对象或变量时,会自动调用对象的toString()方法
正则表达式
/ pattern / modifiers ;
modifiers:i 大小写不敏感
g 全局匹配,查找所有匹配而不是在第一个处停止
m执行多行匹配
模式:
方括号用于查找某个范围内的字符
元字符:(拥有特殊含义)
\d 数字
\s 空白字符
\b 单词边界
\uxxxx 以十六进制数xxxx规定的Unicode字符
量词:
n+ 匹配任何包含至少一个n的字符串
n* 匹配任何包含零个或多个n的字符串
n? 匹配任何包含零个或1个n的字符串
RegExp对象
test() 检测一个字符串是否匹配某个模式,含有匹配文本返回true,否则返回false
exec() 检索字符串中的正则表达式的匹配,返回一个数组,其中存放匹配的结果,如果未找到匹配,则返回值为null
调试
在程序中加入 debugger相当于设置断点
JSON
json对象:保存在大括号内
json数组:保存在中括号内
JSON.parse()将字符串转换为JavaScript对象
JSON.stringify()将JavaScript值转换为JSON字符串
void
指定要计算一个表达式但是不返回值
href="#" ,#包含了一个位置信息,默认的锚是#top
href="javascript:void(0)" 表示一个死链接
函数
函数不以 " ; " 结束
函数可以通过一个表达式定义
函数表达式可以存储在变量中,这样的变量可作为一个函数使用
Hoisting函数提升
JS默认将当前作用域提升到前面去
应用在变量的声明与函数的声明
自调用函数
表达式后紧跟(),则会自动调用
不能自动调用声明的函数
通过添加括号,来说明它是一个函数表达式
函数可作为值、表达式使用
函数是对象、类型为function
arguments.length返回函数调用过程中接收到的参数个数
toString()方法将函数作为一个字符串返回
函数的定义作为对象的属性,称之为对象方法
函数如果用于创建新的对象,称之为对象的构造函数
函数参数
Arguments对象
包含了函数调用的参数数组
函数参数属于局部变量
可以引用对象的值,在函数内修改对象的属性就会修改其初始值,属于全局变量
函数调用
call()和apply()是预定义的函数方法,可用于调用函数,第一个参数必须是对象本身
applay传入一个参数数组,即合并多个参数
call则作为call的参数传入
JS严格模式strict mode下,调用函数时第一个参数会成为this的值,及时该参数不是对象
非严格模式non-strict mode下,如果第一个参数是null或undefined,将使用全局对象替代
通过call()或apply()可以设置this的值,且作为已存在对象的心新方法调用
闭包
所有函数都能访问全局变量
所有函数都能访问它们上一层的作用域
嵌套函数可以访问上一层的函数变量
自我调用函数只执行一次。返回函数表达式
闭包是可访问上一次层函数作用域变量的函数,即便上一层函数已经关闭。
HTML DOM
不要再文档加载完成后使用document.write(),这会覆盖文档。(浏览器窗口会只显示你后来写的内容)
改变内容:
document.getElementById(id).innerHTML=new HTML
改变属性:
document.getElementById(id).attribute= new value
改变样式:
document.getElementById(id).style.property=new style
visibility控制元素显示或消失
EventListener
addEventListener()向指定元素添加时间句柄
不会覆盖已存在的句柄
可以向一个元素添加多个句柄
可以向同一个元素添加多个同类型的时间句柄
可以向任何DOM对象添加事件监听
removeEventListener()移除事件的监听
语法:element.addEventListener(event.function, useCapture)
注意这里的event不要写"on-"前缀
useCapture 布尔值,描述事件是冒泡还是捕获
冒泡中,内部元素事件先触发。捕获中,外部元素时间先触发。默认false冒泡,true代表捕获
IE8及之前不支持
使用element.attachEvent(event,function);
element.detachEvent(event,function);
DOM元素(节点)
创建新的HTML元素
先创建,再追加
createElement,createTextNode,appendChild,getElementById,appendChild
删除已有
var parent = document.getElementById("");
var child = document.getElementById("");
parent.removeChild(child);
或
var child=document.getElementById("");
child.parentNode.removeChild(child);