JS复习

JS复习

  1. 可以将JS代码写在超链接中,在点击时执行<a href="javascript:JS代码">
  2. 不写分号的话,程序会自动添加,会消耗一些系统资源,还可能加错,建议写
  3. 数据类型,typeof 变量名检查
基本数据类型
String
Number
Boolean
Null
Undefined
引用数据类型
Object
  1. 数字超过最大值变成Infinity,超过最小值是-Infinity是一个字面量,也是number型;NaN是一个特殊的数字,表示不是一个数字(比如字符串相乘的结果),也是number型
  2. Null类型的值只有null一个,专门表示空对象,typeof检查时返回object
  3. Undefined类型的值只有undefined一个,用typeof检查时返回undefined
  4. 将其他的数据类型转换为String:方法一,调用被转化类型的toString()方法,null和undefined这两个值没有这个方法;方法二,调用String()函数,对number和boolean实际上就是调用toString()方法
  5. 将其他的数据类型转换为Number: 方法一,Number()函数,纯数字的字符串直接转换成数字,不纯为NaN,空串或全空格转换为0,,null转为0,undefined转为NaN;方法二专门针对字符串,parseInt()转换成整数,parseFloat()转换为小数,小数时检测科学计数法,对非字符串使用这些函数会先转换成字符串,第二个参数可以指明进制
  6. 将其他的数据类型转换为Boolean,调用Boolean()函数,变成false的情况有,数字的0和NaN,字符串的空串,null,undefined
  7. 当对非Number类型的值进行计算时,会先转换成Number再计算,可以前面加+来隐式转换;任何职和NaN计算都会变成NaN;任何值和字符串做加法都会先转成字符串再拼接,与空串拼接转换成字符串本质上就是用了String()
  8. 如果对非布尔值进行逻辑运算,会先转换为布尔值,可以用!!来隐式转换;与和或运算返回最后一个判断的值
  9. 对非数值进行比较时(==与!=见14),先转换成数字再比较;任何值和NaN比较都是false;如果两边都是字符串,根据Unicode码比较
  10. 在字符串中使用转义字符输入Unicode编码\u四位编码,这里是十六进制;在网页中使用&#编码;,这里的编码为十进制
  11. ==判断两个值是否相同时,会自动类型转换,大部分情况下都是转换成数字,由于undefined衍生于null,null和undefined与其他值比较都是false,null == nullnull == undefinedundefined == undefined为true;NaN不和任何值相等,包括本身,可以通过isNaN()函数判断
  12. 与运算的优先级比或高
  13. switch,case语句依次做全等比较
  14. break语句可以跟label来结束指定的循环
  15. console.time('计时器的名字')开启一个计时器;console.timeEnd('计时器的名字')终止计时
  16. 读取对象没有的属性,返回undefined
  17. 创建对象
var obj = new Object();
var obj = {};
  1. delete删除对象的属性
  2. 对象的属性名可以不遵守标识符的规范;特殊的属性名比如123这种不能用.操作,而要用[''][]里可以用变量,这样属性名就是变量值
  3. '属性名' in obj来判断对象是否有某属性
  4. 创建函数对象
var fun = new Function(); // 可以给构造函数传递代码字符串,这种方式很少用
function 函数名(参数列表) {
	函数体
}
var fun = function() {
	函数体
}
  1. 解析器不会检查实参的数量,多则忽略,少则undefined
  2. 如果函数中不写return,返回undefined
  3. 函数的参数可以是任何值,包括函数
  4. 函数内部可以继续声明函数
  5. 全局作用域中的对象window可以直接使用;全局作用域中创建的变量都会成为window对象的属性;全局作用域中创建的函数都会成为window对象的方法
  6. 使用var关键字声明的变量会在所有代码执行之前被声明好,但不会立刻赋值;使用函数声明形式创建的函数在所有代码执行之前创建function fun() {},可以在函数声明前调用,而使用函数表达式创建的不会被提前创建var fun = function() {}
  7. 构造函数内部定义的方法,每次调用构造函数都会生成,因此性能存在问题;所有考虑将构造函数的方法定义在全局,内部使用引用,这样可以优化性能,但是这样又会污染全局;因此引出原型,可以通过类名.prototype或者实例名.__proto__访问到原型对象;原型对象相当于一个公共区域,所有该类实例都可以访问到,当访问对象的属性或方法时,会现在对象自身中寻找,找不到去原型找,直到找到Object对象的原型
  8. 使用in关键字也会去查找原型,只查找自己的话可以用对象.hasOwnProperty('属性名')方法,这个方法在原型链中
  9. 将不再使用的对象的引用变量设置为null,让浏览器自动垃圾回收
  10. 数组是内建对象,读取不存在的数组不会报错,返回undefined
  11. length属性获取数组最大索引+1,哪怕中间不连续;可以设置长度,大于数组实际长度的时候也会产生空值,小于的时候截断
  12. 创建数组
var arr = new Array();
arr[0] = '第一个元素';
// 构造函数
var arr = new Array(1, 2, 3, 4, 5);
// 但如果是一个参数,表示的是长度
var arr = new Array(1);
// 字面量
var arr = [1, 2, 3, 4, 5];
  1. 数组的push方法一次可以给多个参数,返回的是新长度
  2. 对原数组影响的常用的数组方法有
push
pop
unshift
shift
splice
reverse
sort
  1. 函数对象的方法call和apply,第一个参数为对象,此时该对象成为函数中的this;call和apply的参数不同,call依次写实参即可,apply第二个参数为数组
  2. 在调用函数时,除了this,arguments也是一个隐藏的参数,这是一个类数组对象(可以通过Array.isArray()方法判断);arguments.callee返回当前正在执行的函数对象
  3. js也有包装类String(),Number(),Boolean(),对基本类型调用属性和方法时,浏览器会临时用包装类转换成对象
  4. 字符串方法中,substring和slice的区别是substring不能接受负值作为参数(默认为0,并且根据参数大小自动调整位置
  5. 字符串方法中的split和search可以使用正则表达式
  6. 创建正则表达式
var reg = new RegExp('正则表达式', '匹配模式');
或
var reg = /正则表达式/匹配模式;
nodeNamenodeTypenodeValue
文档节点#document9null
元素节点标签名1null
属性节点属性名2属性值
文本节点#next3文本内容
  1. getElementsBytTagName这样的方法返回的是类数组对象
  2. 属性一般可以直接取,但class由于是保留字,要用className
  3. style只能读写内联样式,当前样式的读(写还是只能style)用currentStyle(只有IE支持);其他浏览器中通过getComputedStyle()方法获取(属于window对象)
  4. clientWidth(Height)得到的是不带单位的内容区加内边距的值,只读;offsetWidth则加上边框;scrollWidth得到的是整个滚动元素的值
  5. offsetParent,可以获取当前元素的定位父元素,offsetLeft等为相对其定位父元素的偏移量
  6. scrollLeft可以获取水平滚动条移动的距离;当scrollHeight - scrollTop = clientHeight时,说明垂直滚动条到底了
  7. clientX是鼠标相对于窗口的坐标,pageX是相对于页面的
  8. event.cancelBubble取消冒泡
  9. event.target表示触发事件的对象,this是绑定的对象
  10. 绑定事件的方法
btn.onclick = () => {
}
btn.addEventListener('click', () => {

}, false)
  1. 直接打印Location可以得到当前地址,直接修改则会产生历史记录
  2. 每修改一次样式,浏览器会重新渲染一次页面,所以可以通过修改类名来改样式
  3. 使用ES5的函数语法来写模块,自执行的参数一般会写window,有利于代码压缩
  4. 内存溢出的三种情况:意外产生的全局变量,未清除的定时器、闭包
  5. H5的web works是JS多线程的解决方案
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值