1. js简介
2. 与css和html之间的关系
html是结构层,闲荡与人的骨骼
css是表现层, 相当于衣服
js是行为层, 相当于人的行为和动作
2.js语法
2.1 数据类型
Object对象
- 是以key-value键值对的形式存在的集合
- 键 都是字符串类型
- 值 可以使任何类型
- 对象的拷贝分为深拷贝和浅拷贝
- 浅拷贝:支付至对象内存地址,类似于指针
- 深拷贝:完全克隆,生成一个新对象
let obj = {hello:'world'}; let obj1 = obj; // 浅拷贝 对新值进行修改会改变原来的值 let obj2 = JSON.parse(JSON.stringify(obj)); // 深拷贝, 生成一个新的对
// this is an object let me = { name:'zj', age:'19', gender:'male', hobby:'game' }; // assign attributes me.title = 'mr'; me.education = 'collage'; // get all keys Object.keys(me); // get all values Object.values(me); // iterate for (let key in me) { if (me.hasOwnProperty(key)){ const value = me[key] } }
Array数组
- 数组是一个有序排列的集合
- 数组的值可以使任意类型
- 数组的拷贝分为深拷贝与浅拷贝
- 与对象一致
let items = [1,2,3,4,5]; alert(items[0]); items[0] = '0'; items.length; items.push(6); items.pop(); // 插入/替换元素 items.splice( 0, //要插入的位置 0, // 替换多少个元素 'a' // 替换成什么元素 ); // 删除元素 items.splice( 1, //从哪个元素开始删 2 //删除多少个元素 ); // 遍历元素 items.map(d => d+1); 返回一个新数组 items.forEach(d => { 不返回新数组 // dosomethint })
String字符串
单引号或者双引号括起来的数据
Number数字
任何表示数组的类型
Boolean布尔值
表示true 或者 false的类型
Map映射
- 键值对关系的集合
- 与对象不同的是,键可以是任意类型
- let m = new Map([[1,1], ['1', '1']])
Set集合
- 相当于不重复的数组
- let s = new Set([1,1,1,1,2])
null/undefined
- null 表示该值为空
- undefined表示未定义
=== 双方值相同, 类型也相同, == 将两个值转换成同类型, 再进行比较
js控制流
循环
while
for
array
map
foreach
let a = 0; while (a<10) { a++ } for(let i=0;i<10;i++){ console.log(i); } const arr = [1, 2, 3]; const arr2 = arr.map(d => d+1); arr.forEach(d => console.log(d));
条件控制
let b = 1; let c = 2; if (b > c){ // do something } else if (a === b) { // do something } else { // do something }