js深入浅出 函数和作用域(二)
2017-08-04 11:04
225 查看
函数是一块js代码,被定义一次,但可以执行和调用多次。js中的函数也是对象,所以js函数可以向其他对象那样操作和传递,所以我们也常叫js中的函数为函数对象。
函数由函数名,参数列表,函数体组成。
创建函数的方式:
函数声明:function add(a,b){}
函数表达式:
var add = function(a,b){}
立即执行函数表达式:(function(){})()
将函数对象做为返回值:return function(){}
命名式函数表达式(不常见):
var add=function foo(a,b){}
alert(add === foo);//在ie8一下返回false,在ie9以上报错foo没有定义
函数构造器:var func = new Function();用不用new结果都是一样的。
函数声明与函数表达式的区别:
函数声明前置:
var num = add(1,2);
function add(a,b){};
this
全局作用域下的This指向全局对象,浏览器下的全局对象就是window
console.log(this.document === document);//true
console.log(this === window);//true
this.a = 37;
console.log(window.a);//37
一般函数的this
function f1(){return this;}
f1() === window;//true
如果是严格模式:
function f2(){
"use strict";
return this;
}
f2() === undefined;//true(this指向了undefined)
作为对象方法的函数的this:
对象原型链上的this:
get/set方法中的this也是指向get/set方法所在的对象
构造器中的this:
call/apply方法
bind方法
arguments
作用域
不同调用方式:
直接调用foo();
随想方法o.method();
构造器new Foo();
call/apply/bind : func.call(o);
不同创建方法
函数由函数名,参数列表,函数体组成。
创建函数的方式:
函数声明:function add(a,b){}
函数表达式:
var add = function(a,b){}
立即执行函数表达式:(function(){})()
将函数对象做为返回值:return function(){}
命名式函数表达式(不常见):
var add=function foo(a,b){}
alert(add === foo);//在ie8一下返回false,在ie9以上报错foo没有定义
函数构造器:var func = new Function();用不用new结果都是一样的。
函数声明与函数表达式的区别:
函数声明前置:
var num = add(1,2);
function add(a,b){};
this
全局作用域下的This指向全局对象,浏览器下的全局对象就是window
console.log(this.document === document);//true
console.log(this === window);//true
this.a = 37;
console.log(window.a);//37
一般函数的this
function f1(){return this;}
f1() === window;//true
如果是严格模式:
function f2(){
"use strict";
return this;
}
f2() === undefined;//true(this指向了undefined)
作为对象方法的函数的this:
对象原型链上的this:
get/set方法中的this也是指向get/set方法所在的对象
构造器中的this:
call/apply方法
bind方法
arguments
作用域
不同调用方式:
直接调用foo();
随想方法o.method();
构造器new Foo();
call/apply/bind : func.call(o);
不同创建方法
相关文章推荐
- JS函数作用域及作用域链理解
- js函数内变量的作用域分析
- js 函数的执行环境和作用域链的深入解析
- JavaScript深入浅出————函数和作用域(函数,this)(六)
- js函数内变量的作用域分析
- JavaScript的作用;JS常见的三种对话框;==和===的区别;函数内部参数数组arguments在函数内部打印实参;JS的误区:没有块级作用域
- js-Ajax的作用及其函数的编写
- js总结(二):函数、作用域和this
- js中三种作用域详解(全局,函数,块级)
- Js整理备忘(06)——函数基础(二) 作用域与闭包
- [js]函数的上级作用域,他的上级作用域就是谁,跟函数在哪执行的没什么关系.
- js 函数的执行环境和作用域链的深入解析
- js 函数的执行环境和作用域链的深入解析
- JS作用域为“函数级作用域”,记住最简明的一句“函数中声明的所有变量,无论是在哪里声明的,在整个函数中它们都是有定义的。”QQ253079952
- JS作用域函数闭包
- js 中 函数内部加 return false 的作用
- js中三种作用域详解(全局,函数,块级)
- you don't know js -- Scope and Closures学习笔记——第三章(函数VS块作用域)
- JS 里面的 eval() 函数的作用和报错之后的处理
- js中三种作用域详解(全局,函数,块级)