JS学习(1),如有错误欢迎指正

160 阅读2分钟
  1. 巧用逻辑表达式&&和||应对浏览器兼容问题,可以减少if判断语句的使用;
  2. 通过event.target.tagName找出的标签名为大写形式,而通过event.target.className找出的标签名为小写形式;
  3. 对象.style.样式:该方法设置的是行内样式,其优先级较高会覆盖掉除标明important外的对应样式,可以通过将其设置为空串清除该行内样式;
  4. 关于块作用域:
    如下,无论点击哪个按钮,alert输出的结果都是Num,解决问题的方法目前学习的有两种:
    for (var i = 0; i < Num; i++) {
        btn[i].onclick = function () {
            alert(i);
        };
    }
    

    1、为btn设置一个属性,用来存储i的值,即通过全局作用域来保护i的值;
    2、定义一个函数用来存储btn的onclick事件,并传入实参i,即通过一个函数作用域来保护i的值(闭包);

  5. 每使用一次对象.style.样式都会使浏览器重新渲染,多次使用会降低代码效率,可以通过修改对象的className一次性增添多个样式声明;
  6. undefined未定义指定义了变量但未定义类型,具体表现为定义但未赋值的变量,而null指定义了且类型为null,具体表现为定义且赋值为null的变量;
  7. 变量的回收是指变量被浏览器的垃圾回收器回收,但没有立刻清除,回收器会定期进行空间释放;而变量的释放指变量所占的栈内存空间被清除,通常体现为函数执行完毕后变量空间被自动释放,但变量所指的对象则暂时被回收器回收;
  8. 变量和函数提升:变量提升在前,函数提升在后;
  9. 闭包的作用:延长局部变量的生命周期,但没有及时释放可能会造成内存浪费。