JavaScript 函数

JavaScript 函数

方法&函数

区别

  1. function 是更通用的概念,如数学、编程
  2. method 是面向对象中的概念,一般与类或对象成对出现

关系

  1. 对象的属性可以是任意类型
  2. 对象的属性如果是函数类型,它就叫做这个对象的方法
  3. 所以方法的本质还是函数

函数的调用

  1. fun()
  2. obj.fun()
  3. fun.call()

函数的属性和方法

  1. name
  2. length
  3. toString

作用域

变量不是哪里都可以使用

全局变量(跨文件)

var n = 1;
function fn(){
	console.log(n);  // 1
}

局部变量(只能在函数内部访问)

function fn1(){
	var n = 2;
}
console.log(n);  // Uncaught ReferenceError: number is not defined

函数作用域

  • 函数能独立出一个作用域
var n = 1;
function f(){
	var n = 2;
	console.log(n); // 在当前作用域进行变量寻找
}
f();
console.log(n);  // 在全局作用域进行变量寻找
  • 函数里面可以访问函数外面
var n = 1;
var x = function(){
	console.log(n);
};

function f(){
	var n = 2;
	x();
}
f();
  • 自调用匿名函数
!function (){
	var n = 1;
	console.log(n);
};

~function (){
	var n = 1;
	console.log(n);
};

(function(){
	var n = 1;
	console.log(n);
}());
  • 闭包
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>
  <ul>
    <li>aaa</li>
    <li>bbb</li>
    <li>ccc</li>
    <li>ddd</li>
    <li>eee</li>
  </ul>
  <script>
    var items = document.getElementsByTagName('li'),
            i = 0;
    for (i; i < items.length; i++) {
      items[i].onclick = function(e){
        alert(i);
      };
    }
  </script>
</body>
</html>
function fn1(){
  var a = 1;
  
  function fn2(){
    a += 1;
    console.log(a);
  }
  
  return fn2; 
}

var r = fn1();
r();    // 2
r();    // 3
r();    // 4
  • 回调(callback)给别人调用的函数
function trySomething(callback){
  console.log('some thing');
  callback('成功');
}

trySomething(function(value){
  console.log(value);
});

setTimeout(callback, time),一段时间后将 callback 放入执行清单
JavaScript 引擎做完手头的事情才会去看执行清单

  • 同步
console.log(1);
console.log(2);
console.log(3);
  • 异步
console.log(1);
setTimeout(function(){
  console.log(2);
},0);
console.log(3);
posted @ 2016-06-06 14:37  Jimmzy  阅读(207)  评论(0编辑  收藏  举报