一、简介
1、定义
⑴、javascript是一门动态弱类型的解释型编程语言,增强页面动态效果,实现页面与用户之间的实时动态的交互。
⑵、javascript是由三部分组成:ECMAScript、DOM、BOM
①、ECMAScript是由ECMA-262定义,提供核心语言功能(ECMA是欧洲计算机制造商协会)
②、DOM(Document Object Model)文档对象模式,提供访问和操作网页内容的方法和接口。
③、BOM(Browser Object Model)浏览器对象模式,提供与浏览器交互的方法和接口
2、注释
JavaScript中代码注释:
⑴、单行 ://
⑵、多行 :/**/
3、引入文件
⑴、引入外部文件
⑵、存放在HTML的
或中Js代码内容
①、HTML的head中
②、HTML的body代码块底部(推荐)
⑶、为什么要放在
代码块底部?①、HTML代码从上到下执行,先加载CSS,避免html出现无样式状态。
②、将JavaScript代码块放在body最后,可以让网页尽快的呈现给用户,减少浏览者的等待时间,避免因为JS代码块阻塞网页的呈现。
二、变量
需要注意的是:局部变量必须以var开头声明,如果不写var则为全局变量。
//全局变量
name='nick';
function func(){
//局部变量
var age=18;
//全局变量
gender="men"
}
注:需要注意变量提升,就是把变量位置放到函数体的最上方。
三、运算符
1、算术运算符
⑴、
①、一元算术
+ 一元加,数值不会产生 对非数值应用一元加运算时,会调用Number()转型函数对这个值进行转换。
– 一元减,转化为负数 ~~
++ 递增1 通过Number()转换为数字,再加1,再重新赋值给操作数值
–– 递减1 ~~
②、二元算术
+ 加法
– 减法
* 乘法
/ 除法
% 取模
⑵、二元运算过程
2、比较运算符
=== 严格运算符 比较过程没有任何类型转换
!== 严格运算符 ===的结果取反
== 相等运算符 如果两个操作值不是同一类型,相等运算符会尝试进行一些类型转换,然后再进行比较
!= 不相等运算符 ==的结果取反
> 大于运算符
>= 大于等于运算符
< 小于运算符
<= 小于等于运算符
⑴、严格运算符比较过程
⑵、相等运算符比较过程
⑶、大于小于运算符比较过程
3、逻辑运算符
! 非(两个!!表示Boolean转型函数) 返回一个布尔值
&& 与 两个操作都为true时返回true,否则返回false(返回值不一定是布尔值),可以多个连用(..&&..&&..)
|| 或 两个操作都为false时返回false,否则返回true(返回值不一定是布尔值),可以多个连用(..||..||..)
//七个假值
console.log(!!undefined);//false
console.log(!!null);//false
console.log(!!0);//false
console.log(!!-0);//false
console.log(!!NaN);//false
console.log(!!' ');//false
console.log(!!false);//false
console.log
console.log
⑴、&& 常用操作
⑵、 || 常用操作
四、数据类型
特殊值
1、数字(Number)
JavaScript中不区分整数和浮点数,所有数字均用浮点数字表示。
⑴、转换
parseInt() 将某值转换成整数,不成功则NaN。
parseFloat() 将某值转换成浮点数,不成功则NaN。
⑵、特殊值
NaN,非数字。可以使用isNaN(num)来判断。
Infinity,无穷大。可以使用isFinite(nun)来判断。
2、字符串(String)
转义字符
3、布尔类型(Boolean)
true(真)和false(假)
4、数组(Array)
var name=Array("nick","jenny");
var name=["nick","jenny"];
5、Math
Math对象是一个静态对象,而不是构造函数。实际上,Math只是一个由JavaScript设置的命名空间,用于存储数学函数。
Math方法
五、语句
1、条件语句(if、switch)
JavaScript中支持两个条件语句,分别是if和switch。
⑴、if语句
⑵、switch语句
2、循环语句(for、for in、while、do-while)
JavaScript中支持四种循环语句,分别是:for,for in,while,do-while
⑴、for 循环
⑵、for in 循环
⑶、while 循环
⑷、do-while 循环
3、label语句
label语句可以理解为跳出任意循环。
⑴、未加label实例
⑵、加label实例
4、异常处理
主动抛出异常:throw error('****')
六、函数function
1、定义函数的三种方式
2、函数参数(arguments)
函数传参的个数可以小于实际需传参的个数,没传参的默认为undefined
⑴、函数传多默认不起作用
⑵、arguments可接受所有参数,返回一个数组
3、作用域与作用链
⑴、JavaScript中没有块级作用域
⑵、作用域链
每个构造函数都有一个内部对象指针,指向原型对象,而原型对象也包含一个指向构造函数的指针。如此层层递进,形成作用域条
4、闭包
闭包就是能够读取其他函数内部变量的函数。
闭包使函数中的变量都被保存在内存中,内存消耗大,所以少用闭包,否则会造成网页的性能低,在IE中可能导致内存泄露。
所以在退出函数之前,将不使用的局部变量全部删除。
5、面向对象(特性、构造模式、原型模式prototype)
⑴、面向对象的三大特性:
封装:隐藏代码实现的细节,实现代码的模块化
继承:扩展已经存在的代码模块,实现代码重用
多态:接口的不同实现方式,实现接口重用
关键字:
this:代指此时的对象
new:创建对象时必须使用
⑵、构造函数模式
上述模式把同样的函数封装到了不同的对象,造成了内存浪费。
⑶、原型模式(prototype)
所有的构造函数的prototype属性都指向另一个对象(同一块内存地址),这个对象的所有属性和方法,都会被构造函数的实例继承。
6、prototype验证方式(isPrototypeOf、hasOwnProperty、in)
⑴、isPrototypeOf()
用来判断一个对象是否存在于另一个对象的原型链中
⑵、hasOwnProperty()
用来判断某一个对象(不包括原型链)是否具有指定属性
⑶、in运算
判断某个实例是否具有某个属性
七、其他
1、序列化
JSON.stringify(obj) 序列化
JSON.parse(str) 反序列化
2、转义
3、eval
JavaScript中的eval既可以运行代码,也可以获取返回值。
eval()
EvalError() 执行字符串中的JavaScript代码
4、正则表达式
JavaScript中支持正则表达式,其主要提功了两个功能:
①、test(string) 用于检测正则是否匹配
②、exec(string) 用于获取正则匹配的内容
匹配模式:
g:表示全局(global)模式,匹配所有字符串,不会匹配到第一项时停止
i:表示不区分大小写(case-insensitive)模式
m:表示多行(multiline)模式,到达一行文本末尾时还会继续查找下一行中是否存在匹配的项。
括号分组:
元字符
匹配规则简写
5、时间处理
时间操作中有两种时间:
⑴、时间统一时间
⑵、本地时间(东八区)
data方法