做笔记是一个好习惯,做笔记不等于抄书,书上的内容不是一眼就能够看懂的,我们需要将书上的内容做一个“翻译”,翻译成自己一眼就能够读懂的文字。
P23
==与===的区别
var a = false;
var b = '';
a == b;//结果为true
a === b;//结果为false
区别:== 只进行值的比较,而 === 除了判断值相等,还会判断类型是否相等。这里flase和''具有相同的含义,但是它们类型不同,一个是boolean一个是String。
注:!= 与 !== 同理
P28
规范:变量用下划线分割各个单词,函数用驼峰命名法。这样便于一眼看出哪些是变量哪些是函数。
变量作用域:在函数内部,用var声明的变量是局部变量,反之则是全局变量。
function square(num) {
total = num * num;
return total;
}
var total = 50;
var number = square(20);
alert(total);//答案是400
P42
自己实现一个 getElementsByClassName 方法
Shopping list
What to buy
Don't forget to buy this stuff.
- A tin of beans
- Cheese
- Milk
P51
事件处理函数的工作机制:给某个a标签添加onclick事件,onclick双引号里面的js代码返回true或false,如果返回的是true,那么onclick事件处理函数就会认为这个链接被点击了;反之,如果返回false,onclick事件处理函数就会认为这个链接没被点击。
可以通过下面的代码去验证这一结论:
Click me
踩坑
百度
执行完以上代码你会深刻领悟到js 的坑。
首先你要知道 当 onclick 后面的事件不是一个函数名时,它会被包裹到一个匿名函数中执行。
以上就相当于是
obj.onclick = function() {show();}
当点击链接的时候执行 onclick 里面的代码,而不是把show()当作事件处理程序,return false 只是在 show() 这个函数中返回了并没有在 onclick 事件中返回。
因此还会发生跳转
重点在这里:在事件处理函数的工作机制中,当在给某元素添加事件处理函数后,一旦事件发生,相应JavaScript代码就会执行,所调用的JavaScript代码的返回值被传递给事件处理函数。当我们给a标签添加onclick事件处理函数并点击a触发其后,如果相应JavaScript代码返回true,onclick事件处理函数就会认为这个链接被点击了,同样的若返回false即会认为链接未被点击。
所以 可以这样写
百度
百度
P70
对象检测:检测浏览器是否支持某个方法。
if (!getElementById || !getElementsByTagName) return false;
备注:对象检测是用来向下兼容浏览器的,由于我只是单纯的学习js,所以没必要考虑兼容性的问题。
P72
尽量少访问DOM
只要是查询DOM中的某些元素,浏览器都会搜索整个DOM树。
尽量减少文档中的标记数量
过多不必要的元素只会增加DOM树的规模,进而增加遍历DOM树的时间。
P73
合并js脚本
尽量把多个js脚本合并成一个,这样可以减少加载页面时发送的请求数量。而减少请求数量通常都是在性能优化时首先要考虑的。