js组成部分
- Ecmascript 核心语法部分:变量,命名规范,数据类型,各种语句
- DOM(document object model)部分:提供了操作DOM元素的属性和方法
- BOM(browser object model)部分:提供操作浏览器的属性和方法
JS引入方式
-
行内式
下面两种方式放在所有的结构后面 -
内嵌式
-
外链式
-
调试方式
- alert()
- console.log()
- console.dir()会将对象类型数据在控制台里详细的打印出来
JS数据类型
- 基本数据类型
- number,string,Boolean,null,undefined
- 引用数据类型
- 对象类型(object,array,regExp,Date)和函数类型
number类型:整数,小数,NaN
- 如下情况会是NaN
- 1.四则运算失败时
- 2.将其他数据类型强制转换成number型失败时
复制代码
- 转换成number的方法
- Number()
- null->0, undefined->NaN,""->0,false->0,{}->NaN
- parseInt() 提取字符串中的整数部分
- parseFloat()提取字符串中的小数部分
复制代码
- 判断一个数是否是有效数
- isNaN() 1.通过Number()方法强制转换。2.通过isNaN()判断
- false:则是有效数
- true:为NaN,无效数
复制代码
string类型
- 用引号包起来的
- 变量和字符串的区别
- 加引号的是字符串 ‘abc’
- 不加引号的是变量 var abc = 1; //abc是变量
- 字符串中的加号表示拼接
- 字符串中表示字符本身含义 \->\ "->"\ '->'\ \t \r \n
Boolean类型
-true和false
- 0,NaN,null,undefined,“”->false 其余的全部为true
- var a = 2;
- !a->false;
- !!a->true;
null和undefined
- 都表示空
- null表示现在是空,但是以后会有
- undefined表示从来没有过
引用类型数据
对象类型
- 基本类型的数据只能存储一种类型的值,若想对一个事物从多方面去描述,则基本类型就满足不了需求,需要定义对象数据类型
- 定义对象的方式:
-
- 对象字面量的方式:var obj = {name:‘a’,age:11}
-
- 构造函数的方式:var obj = new Object()
-
- 操作对象的方式
- 打点的方式: .name
- 中括号的方式: ['']
- 增删改查
- 若属性名是数组 只能通过[]的方式,不能通过打点的方式
- 若属性名不确定,只能通过[]的方式,不能通过打点的方式
var obj = { name : 'a', age : 11, } var width = 'age'; obj[width]; 复制代码
数据存储
- 基本类型的数据存储在栈内存 - var num = 10; - 1.开辟一个内存存储变量num - 2.开辟一个内存存储值10 - 3.把10赋值给num,称之为定义
-
引用类型数据存储在堆内存
- var obj = {name:'ss',age:20}
- 1.开辟一个堆内存,假设引用地址是FFF000
- 2.将对象的属性名存入这个内存
- 3.将引用地址FFF000赋值给变量obj,这样obj就指向了内存空间
- 注意:引用类型的数据操作是引用地址
-
栈内存和堆内存的区别
- 栈内存存放基本类型的值,堆内存放引用类型的值
- 栈内存空间小速度快,堆内存空间大速度慢
for in循环
- for(var i in obj)//在obj中定义一个变量i用来保存属性名
- 遍历次数是由属性决定的
- in 在...中 判断某个属性是否在对象中,若存在则返回true,不存在返回false
if else
- if else if 是一级一级进行判断,如果当前判断成立就执行大括号里面的代码后面的判断不再生效,也不会执行,直接跳过,如果当前判断不成立,才会走下一个判断。
function fn5(s) {//如果没有参数 那么就会在函数外界寻找s
console.log(s.name, 's.name');
}
复制代码
fn5('sss')//函数在执行的时候传的参数,和方法需要的参数是一一对应的,
如果函数执行没有传递某个需要的参数,
//那这个参数就是undefined。
复制代码
switch
- 一般在多种判断情况下使用
- 在case判断中是 === 判断
- 最后需要break跳出循环
for循环
- 重复一件事情 ,确定遍历的次数
- 1.初始化变量 var i = 0;
- 2.遍历的条件,决定了遍历的次数
- 3.若条件成立执行循环体中的内容
- 4.执行累加或累减
- continue/break 遇到这两个代码 后面代码不再执行
- continue 中止本次,执行下一次
- break 中止整个for循环(本轮循环)
类数组
- 通过id名获取ul标签
- var oUl = document.getElementById('list');
- 通过标记名获取所有的li标签 限制范围 v
- ar oLis = oUl.getElementsByTagName('li');
- Elements 元素集合 TagName 标记名
- console.log(oLis instanceof Array); //false说明不是数组
- 元素集合跟数组非常相似
- 1.都有length 2.数字属性名跟索引一样,从0开始递增 —>这样的 对象称为类数组
遍历类数组拿到每一个li for(var i=0; i<oLis.length; i++){ oLis[i].className = i%2 ? 'bg0' : 'bg1'; }
- 1.都有length 2.数字属性名跟索引一样,从0开始递增 —>这样的 对象称为类数组