《javascript 高级程序设计》notes

1 < script>标记的defer和async

defer:立即加载(不阻塞后续html加载),所有元素解析完成后,执行script
async :乱序立即加载(不阻塞后续html加载),script加载完成后,立即执行script;
##
2.2 null==undefined,平常使用常常会忘记,而去判断两次
3.4 isNaN() 是否NaN
	Number() 将不同类型的数据转成数字类型
3.5.2 按位操作符
	^ 按位异或 [不相同则为1,相同则为0]
	<< 左移 `1<<31   -2147483648,补码 = 反码 + 1`
	>> 右移 
	>>> 无符号右移
3.5.6 字符串比较按照字符编码进行比较,所以对字母的大小写比较要注意
	所以对数字的相互比较,也必须要保证其中一方为数字
3.5.10 逗号操作符:用于声明变量和赋值(赋值时总是返回表达式最后一项)
//3.6.6 label语句 用于给for等循环代码加标签,以便将来被break和continue使用;
	aaa:for(;;){
		//dosomething....
		for(;;){
			break aaa;
		}
	}

3.7 函数有内置参数数组arguments,可以用以获取传入的参数,即使方法定义本身没有设置传入参数;但在严格模式下,arguments对象不允许被修改
js的方法参数传递和java类似都是值传递,但是由于对象变量的值是对象内存的引用,所以方法内部对对象进行修改会改变外部值

4 .变量,作用域,内存问题
一个函数即为一个执行环境,内部的临时变量属于函数的作用域,一旦函数执行完毕,该环境也就被销毁,局部变量等也同样被销毁;一层层的作用域形成作用域链.
js中没有[块级作用域],而java中有.
垃圾回收机制:标记清除/引用计数(废弃);因为当存在变量重复引用时,引用清除将不具备可靠性;
所有变量当不再需要时,最好的做法是=null;这样可以便可以在下一次垃圾回收时释放掉不必要的消耗;
5 .引用类型
instanceof 当存在多层js框架时,js的Array的构造就会不同,所以用来检测是否是Array就会不准确,这个时候最好使用Array.isArray(目标数组)方法
5.4. 正则RegExp
匹配模式:g(全局匹配global模式)
i(case-insensitive)大小写敏感匹配模式
m(multiline)多行匹配模式
Eg:   /表达式/gi

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值