1、JS是脚本语言,主要用于页面与用户的交互和页面功能,实现部分动画效果
JS的组成

2、页面引入方式

3、变量
弱类型语言,变量类型由声明时的值决定
js数据类型
typeof(变量) 用于获取变量类型
number 123
string 'asd'
boolean true
undefined 不赋值如var a
null

复合类型
object
NaN表示不是一个数字
isNaN判断是不是一个数字 ,不是数字返回true,如果是数字则返回false

类型转换


这块涉及到parseInt方法的一个BUG
变量,函数,属性命名规范
第一个字符必须是字母,下划线,美元符号
其他可以是字母,下划线,美元符号和数字
区分大小写
4、js获取元素[html中的标签如div、a等]
通过document对象来实现
<div id='12233'> 其中id是div元素的一个属性
常用方法通过document对象,如document.getElementById()

获取页面上元素的属性之后就可以对属性进行读写操作

5、js函数
函数定义:在js文件或者javascript代码块中声明
function aa(){
alert(hello)
}
函数调用:
在js文件或者javascript代码块中调用 aa()

函数传参
需要注意的是变量需要用【】中括号,而不能用点

函数返回值:返回函数返回值,结束程序运行

在行间事件调用

匿名函数 aa = function( ) {
alert(hello)
}

6、条件语句
if else条件语句

switch条件语句

if elseif else多重条件语句
数学运算之运算符

7、数组
数组就是python中的列表
创建方式
方式1:var aRrr01 = new Array(1,2,3) #定义了一个数组并初始化
方式2:var aRrr02 = [0,1,2]
数组的常用方法
获取长度 length属性
通过索引获取指定位置的元素 如aRrr01[0]
多维数组的创建方式:数组成员也是数组

多维数组使用方法

数组转字符串join方法,参数是分隔符

增加push和删除pop数组中的成员【对数组末尾进行操作】

增加unshift和删除shift数组中的成员【对数组前面进行操作】

数组反转reverse方法

获取数组元素的索引值,若有多个相同的元素,则从索引为0的位置开始,返回第一个元素出现的索引值indexof

在数组中间增加或删除元素splice方法

参数1:开始的索引,包括该元素
参数2:表示删除元素的个数
其他参数【可选】:表示增加的元素
数组去重
核心思想:主要是用for循环遍历每个元素,使用indexof判断每个元素当前索引值是不是与首次出现的索引值一致

8、循环语句
for循环

【注】这块的aLi不是一个数组,是一个选择集
while循环

9、字符串的处理方法

【注】substring包左,不包右
indexof找不到返回-1
使用方法:

JS中的一个BUG
若0.1与0.2直接相加会计算错误

字符串反转
核心思想,先转数组,调用数组的reverse方法,然后再用join方法转字符串

调试程序的方法

10、定时器
作用1:异步操作
setTimeout(aa,2000) 第一个参数是函数名,第二个参数是时间单位是ms
关闭定时器clearTimeout
Timer = setTimeout(aa,2000)
function aa(){
alert('hello')
}
clearTimeout(Timer)
作用2:制作动画
反复执行

实i现动画效果,让盒子向右移动,到一定距离时停止

通过定时器设置时钟

这块有两个坑:
第一个是月份是0到11,星期是0到6
倒计时【实际开发中now的时间要从服务器获取】

作用3:函数缓存和节流
页面效果做弹框:弹框弹出后用户只能操作弹框,操作不了界面其他元素。
第一点:设置一个罩子div01,能遮住浏览器【采用固定定位,宽度和高度均为100%】,同时要设置层级很大。保证遮住其他元素,要想显示其他元素,设置透明度。
第二点:弹框div02,首先层级要大于div01,这样才能显示。定位也采用固定定位
第三点:div02内设置关闭按钮,点击的时候设置div01和div02为display:none
11、变量的作用域以及封闭函数
全局变量:函数外定义的变量。函数内、函数外都可以访问
局部变量:函数内定义的变量,只有函数内才可以访问
JavaScript 变量生命周期在它声明时初始化。
局部变量在函数执行完毕后销毁。
全局变量在页面关闭后销毁。
封闭函数(定义的匿名函数)();
优点是不会影响全局的变量、函数等。项目开发中为了防止影响其他的,可以把自己要实现的功能放到封闭函数内,封闭函数定义的变量、函数都不会影响全局。

12、闭包
怎么理解闭包呢,就是函数嵌套一个函数,内函数调用外函数的局部变量和参数,参数和变量不会被垃圾空间回收。
大家都知道垃圾回收机制是变量的引用数为0的话,那么这个变量就会被回收。在闭包这个场景中,外函数内的变量被内函数调用,而外函数同时也在带调用内函数。形成了互相调用的关系,并且当我们在外面调用他们时,出现了第三方的调用关系。所以导致就算是函数执行完成后,变量的引用依然不是0.所以它不会被回收。

那为啥会出现闭包呢?大家都知道,函数外是无法访问函数内的变量的。而闭包的出现,使得在函数外面也可以访问函数内部的作用域。
闭包的用途:
用途1:由于闭包函数的变量不会被回收,所以我们可以用闭包在循环中存放索引值

类似于这种情况,我们期望的是弹出的i是从小到大,但实际上执行的过程中。是先绑定了onclick事件,最后弹出的i都是循环结束之后的i值。这个时候我们需要一个全局的作用域来存放闭包

上述代码块就使用了闭包函数来存所有值
用途2:私有变量计数器,外部无法访问,避免全局变量的污染

13、内置对象

第一个:document.referrer的使用场景是模拟登录过程,存储跳转之前的页面的URL。

第二个:Windows.location.herf用于跳转
Windows.location.serch 我们常在URL中加参数,如URL+?zhanghong

Windows.location.hash 我们常在URL中加参数,如URL+#zhanghong
第三个math


Math.random()获取0到1的整数,若想获取选定范围a-b的随机数。
Math.random()*(b-a)+a
Math.floor() 向下取整
Math.ceil() 向上取整
14、JS中的对象

调用对象中的属性,如Tom.age
调用对象中的方法,如Tom.showname()
工厂模式创建对象

通过构造函数创建对象

原型模式
解决了构造函数创建的实例化对象方法不能共享的问题

对象调用方法的时候,先在自己对象的方法中找,找不到再去找原型方法
继承

对象的call和apply方法

相同点:都可以用来改变对象中this的值
不同点:使用上传参不同
经常使用这个方法来实现继承

网友评论