美文网首页
JS 函数的上下文

JS 函数的上下文

作者: a5c0a9d9ccb8 | 来源:发表于2016-03-04 11:07 被阅读286次

函数执行上下文,其实就是Javascript中代码的运行环境,可以通过this来访问函数的执行上下文。分为以下三种:

  • 全局级别的代码
    这个是默认的代码运行环境,一旦代码被载入,引擎最先进入的就是这个环境。默认为window。
  • 函数级别的代码
    当执行一个函数时,运行函数体中的代码。
  • Eval的代码
    在Eval函数内运行的代码。

注:call和apply通常用来修改函数的上下文,函数中的this指针将被替换为call或者apply的第一个参数

例子1
<pre>
var seq = [1,2,3,4];
for(var i in seq){
var name = ‘zhou’ + i;
window.setTimeout(function(){
$('p’).apend(name);
},i*1000);
}
</pre>
有人可能认为输出是zhou1zhou2zhou3zhou4,实际上结果是zhou1zhou2zhou3zhou4。因为函数window.setTimeout(实际上我们常常会省略掉window)的上下文实际上是window,而函数体中的name实际上就是window.name。他的值就是最后一次循环后的值zhou4。<br />


例子2
<pre>
var seq = [1,2,3,4];
for(var i in seq){
var name = ‘zhou’ + i;
var obj = {};
obj.name = name;
obj.setTimeout = function(){
var local = this; // 该方法是对象obj的属性方法,所以this就是obj
window.setTimeout(function(){
$('p’).apend(local.name); // 此处千万不可以用this,因为此处的this实际上是window。
},i*1000)
}
}</pre>


参考链接
深入理解Javascript之执行上下文(Execution Context)
javascript 函数执行上下文

相关文章

  • 函数的底层处理机制

    js上下文分类 js上下文(哪一个区域下执行)分类: 1.全局上下文EC(G) 2.函数执行形成...

  • 关于import函数时,函数的执行上下文问题

    test.js main.js 这里是想说明:import函数时会同时绑定函数的执行上下文;我们在main.js里...

  • JS中的this

    JS中的this 众所周知,JS中this的代表的是当前函数调用者的上下文。JS是解释性的动态类型语言,函数在调用...

  • this的指向问题

    函数的调用姿态 js完整的调用姿态是 上下文.函数(),也就是说函数并不能真正单独调用,他一定是被某个上下文调用...

  • JS中this的作用

    this的用途 JS在允许在函数内部引用当前执行上下文中的变量 用来优雅准确的告诉当前运行的函数所处的上下文环境 ...

  • ES6箭头函数

    定义 ES6 允许使用“箭头”(=>)定义函数。 关于普通函数应该知道的 js中的this是执行上下文,在普通函数...

  • JS Context

    js的执行上下文 在js中,执行上下文保存着函数执行所需的重要信息,其中包括了三个属性: 变量对象作用域链this...

  • js模拟实现call、apply、bind函数

    js的call, apply, bind函数的实现,这是老生常谈了,这些都是改变函数执行上下文的函数;今天我也来实...

  • js 执行上下文

    1. 执行上下文: Execution Content:函数执行前的准备工作 2. JS执行环境 3. JS是如何...

  • 浅谈 JS 执行上下文和作用域

    一、JS 中的执行上下文。 变量或函数的上下文决定了它们能够访问哪些数据,以及它们的行为。每个上下文都有一个关联的...

网友评论

      本文标题:JS 函数的上下文

      本文链接:https://www.haomeiwen.com/subject/lgjokttx.html