JavaScript组成
-ECMAScript:解释器、翻译(核心)
-DOM:Document ObjectModel(文档对象模型,赋予操作HTML的能力)
-BOM:Browser ObjectModel(浏览器对象模型,赋予操作window浏览器的能力)
-各组成部分的兼容性,兼容性问题由来
-ECMA 几乎没有兼容性问题
-DOM 有一些操作不兼容
-BOM 没有兼容问题(完全不兼容)
变量类型
-类型:typeof运算符
-用法、返回值
-常见类型:
-number、string、boolean、undefined(没定义/定义没给东西)、object、function
-一个变量应该只存放一种类型的数据
-数据类型转换
-例子:计算两个文本框的和
-显示类型转换(强制类型转换)
-parseInt()(12px34-->12)、parseFloat()
-NaN的意义和检测(Not a Number,NaN和NaN不相等,isNaN())
-隐式类型转换
-==(先转换类型再比较)、===(不转换类型直接比较)
-减法(数字相减)(加法:字符串连接/数字相加)
变量作用域和闭包
-变量作用域(作用范围)
-局部变量(只能在定义它的函数中使用)、全局变量(任何地方都能用)
-什么是闭包
-子函数可以使用父函数中的局部变量
-之前一直在使用闭包
-网上对闭包的定义
命名规范
-命名规范及必要性
-可读性—能看懂
-规范性—符合规则
-匈牙利命名法
-类型前缀a-数组 o-对象 fn-函数i-整数 s-字符串 re-正则
-单词首字母大写
运算符
-算术:+ - * / % 实例:隔行变色、秒转时间
-赋值:= += -= *= /= %=
-关系:< > <=>= == === != !==
-逻辑:&& || !实例:全选和反选
-运算符优先级:括号
程序流程控制
-判断:if、switch、?
-循环:while、for
-跳出:break跳出整个循环、continue跳过本次循环
-什么是真、什么是假:
-真:true、非零数字、非空字符串、非空对象
-假:false、数字零、空字符串、空对象、undefined
Json(JavaScript Object Notation)
-什么是Json
-varjson={a:5,b:‘abc’};alert(json.a);
-Json和数组
-下标字符串/数字
-json没有length
-Json和for in
-for(vari in json){alert(‘第’+i+‘个东西’+json[i]);}
函数返回值
-什么是函数返回值
-函数的执行结果
-可以没有return
-一个函数应该只返回一种类型的值
函数传参
-可变参(不定参):arguments
-参数的个数可变,参数数组
-例子1:求和
-求所有参数的和
-例子2:CSS函数
-判断arguments.length
-给参数取名,增强可读性
-获取非行间样式(不能用来设置)
-obj.currentStyle[attr]
-getComputedStyle(obj,false)[attr]
-复合样式:background、border
-单一样式:width、height、position以上只能取单一样式
数组基础
-数组的使用
-定义
-vararr=[12,5,8,9]
-vararr=new Array(12,5,8,9)
-没有任何差别,[]的性能略高,代码短
-数组的属性
-length
-既可以获取,又可以设置
-例子:快速清空数组(arr.length=0;)
-数组使用原则
-数组中应该只存一种类型的变量
-数组的方法
-添加
-push(元素),从尾部添加
-unshift(元素),从头部添加
-删除
-pop(),从尾部删除
-shift(),从头部删除
排序转换
-排序
-sort([比较函数]),排序一个数组(只认识字符串)
-排序一个字符串数组
-排序一个数字数组
-arr.sort(function(n1,n2){
return n1-n2;
})
-转换类
-concat(数组2)
-连接两个数组
-join(分隔符)
-用分隔符,组合数组元素,生成字符串
-字符串split
插入删除
-splice
-splice(开始,长度,元素、、、)
-先删除,后插入
-删除
-splice(开始,长度)
-插入
-splice(开始,0,元素、、、)
-替换