javascript是有很多特定习惯的效率型语言,千万不要用强类型语言思维去写javascript代码,write less, do more! 当然现在高级语言也在做减法,直接而高效是编程语言发展的一个趋势。
javascript的语法真的挺特别的,除了函数对象外,|| 运算符和&& 运算符的效果也真不一样,结果不一定返回bool值的,所以有var optionA = optionA || ‘default value’ 的写法。
函数对象与C++函数指针的区别是:前者可以在函数内定义,函数内部变量的生存期可能超出函数本身的生存期,如果被函数的内部函数使用后。——很绕吧,就是必包。
还有函数可以不必定义形参,反正有arguments这个内部变量,arguments是类似数组的对象,支持arguments[idx]取参数,支持.length表示实际传递参数个数,但是不支持slice()方法,它不是数组对象。
此外,变量提升类的题目,只要把变量申明(包括函数申明)与赋值语句分开,申请按顺序放在最前,赋值在所有申明之后,重新排序后,答案就出来了。
- javascript允许变量重复定义,例如:var a=10; var a=100; console.log(a); 答案是100。
- 申明提前,包括函数申明提前,谨记。function a(){}是申明。
- var funa = function a(){}不属于函数申明,按照funa申明与赋值分离处理即可。
- 函数申明优先于变量申明。function a(){}; var a; console.log(a); 会输出函数体,而不是undefine。
- 函数名与变量名可相互覆盖,function a(){}; var a=100; console.log(a); 会输出100。
此外,前端开发基本的一个环节是:DOM元素事件处理,事件触发的三个阶段:捕获,目标与冒泡是必须要了解的,IE仅支持冒泡。addEventHandler在IE6/7/8得不到支持,只支持attachEvent。target与currentTarget分别代表事件的触发元素与注册元素(因为冒泡或者捕获,target与currentTarget可能并不一致)。
1 评论
添加您的 →