js注意点

事件监听

element.addEventListener(*event*, *function*, *useCapture*)

event click等方法
useCapture
true - 事件句柄在捕获阶段执行
false- false- 默认。事件句柄在冒泡阶段执行
实例demo

实参,形参

函数参数包括形参,实参,形参就是函数定义时的参数;实参就是函数调用时传入的参数。由于js是弱类型语言,所以js函数的形参不指定类型。

get(3,4,5,6); 
   function get(x,y,z) {
       console.log(arguments); //[3, 4, 5, 6]获取实参对象是个数组,是实参对象的引用
       console.log(x+y+z); //12
   }

arguments对象的callee的属性

var fact = function(x) {
        if (x <= 1) {
            return 1;
        } else {
            return arguments.callee(x - 1) * x;
        }
    };
    fact(5); //120

阶乘 PS:实参对象有两个特殊属性callee和caller,其中callee属性代指当前正在执行的函数,caller属性代指调用当前正在执行的函数的函数,caller属性不是标准属性,不是所有浏览器都支持。

函数作用域

var scope = "outter";
! function() {
    console.log(scope); //undefined
    var scope = "inner";
    console.log(scope); //inner
}();
console.log(scope); //outter

说明undefined 由于函数作用域的声明提前特性,这里的scope已经在函数顶部声明,但是没有被赋值,所以scope值为undefined

立即执行函数

  • 写法如下
(function() {
    console.log("1");
}());  //推荐
(function() {
    console.log("2");
})();
! function() {
    console.log("3");
}();
void function() {
    console.log("4");
}();
~ function() {
    console.log("5");
}();

作用 1.保存参数上下文环境2.作为命名空间

  • 列子 循环中执行异步函数,并且函数参数随循环变化
 for (var i = 0; i < 10; i++) {
        $.post(url, { index: i }, function() {});
    } //for运行完 在执行post 全是i=10
    for (var i = 0; i < 10; i++) {
        (function(index) { $.post(url, { index: index }, function() {}); }(i));
    } //true
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • title: js面向对象date: 2017年8月17日 18:58:05updated: 2017年8月27日...
    lu900618阅读 581评论 0 2
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 7,842评论 2 17
  • 一、JavaScript基础知识回顾 1.1 JavaScript 1.1.1 javascript是什么? Ja...
    福尔摩鸡阅读 1,341评论 0 7
  • 原文:http://dmitrysoshnikov.com/ecmascript/javascript-the-c...
    jaysoul阅读 489评论 0 0
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,270评论 0 4