首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JavaScript中的函数调用模式作用域规则

是指在函数中定义的变量的作用范围。在JavaScript中,函数有四种调用模式:函数调用、方法调用、构造函数调用和间接调用。

  1. 函数调用模式:
    • 函数调用模式中,函数被直接调用,此时的作用域是全局作用域。
    • 在函数内部,可以通过this关键字来引用全局对象(浏览器环境下是window对象)。
    • 示例代码:function foo() { console.log(this); // 输出全局对象(浏览器环境下是window对象) } foo();
  2. 方法调用模式:
    • 方法调用模式中,函数作为对象的方法被调用,此时的作用域是该对象。
    • 在方法内部,可以通过this关键字来引用该对象。
    • 示例代码:var obj = { foo: function() { console.log(this); // 输出obj对象 } }; obj.foo();
  3. 构造函数调用模式:
    • 构造函数调用模式中,函数通过new关键字被调用,此时的作用域是新创建的对象。
    • 在构造函数内部,可以通过this关键字来引用新创建的对象。
    • 示例代码:function Foo() { console.log(this); // 输出新创建的对象 } var obj = new Foo();
  4. 间接调用模式:
    • 间接调用模式中,函数通过call()apply()方法被调用,此时的作用域是传入的对象。
    • 在函数内部,可以通过this关键字来引用传入的对象。
    • 示例代码:function foo() { console.log(this); // 输出传入的对象 } var obj = {}; foo.call(obj);

函数调用模式作用域规则决定了函数内部变量的可见性和访问权限。在函数内部,可以访问函数外部的变量(闭包),但函数外部无法访问函数内部的变量。

JavaScript中的函数调用模式作用域规则对于理解和使用JavaScript函数非常重要。在实际开发中,可以根据不同的调用模式来合理地使用函数,提高代码的可读性和可维护性。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Rust作用作用规则

下图展示了一个字符是如何存储在内存:变量 s 保存在栈,其值是一个指向堆地址,堆则保存了字符串具体内容。 所有权实际规则 Rust 每个值都绑定有一个变量,称为该值所有者。...每个值只有一个所有者,而且每个值都有它作用。 一旦当这个值离开作用,这个值占用内存将被回收。 fn main() { let value1 = 1; println!...("{}", s4); } // 所有权转移给了s3,此时该值作用也变成了s3作用,所以离开了s4作用该值还能访问 println!...这种需求在函数调用时特别常见,思考以下代码: fn echo(s: String) { println!...我们试图编写一个函数,该函数返回一个字符串 &str。但问题来了,字符串内容 “Hello World!” 作用函数体,而函数却试图返回它引用。

3.9K30
  • 【深度剖析】JavaScript块级作用函数作用

    面试官必问系列:深入理解JavaScript块和函数作用 • 在 JavaScript ,究竟是什么会生成一个新作用,只有函数才会生成新作用吗?...那 JavaScript 其他结构能生成新作用吗? 3.1 函数作用 • 在之前词法作用域中可见 JavaScript 具有基于函数作用,这也就意味着一个函数都会创建一个新作用。...• 规则冲突方式: 1....第一个片段 foo 被绑定在所在作用域中,可以直接通过 foo() 来调用它。第二个片段foo 被绑定在函数表达式自身函数而不是所在作用域中。...函数JavaScript 中最常见作用单元。 2. 块作用是变量和函数布局可以属于所处作用,也可以属于某个代码块(通常指 {...} 内部) 3.

    24010

    JavaScript作用作用

    作用(Scope) 1. 作用 作用是在运行时代码某些特定部分变量,函数和对象可访问性。换句话说,作用决定了代码区块变量和其他资源可见性。...ES6 之前 JavaScript 没有块级作用,只有全局作用函数作用。ES6 到来,为我们提供了‘块级作用’,可通过新增命令 let 和 const 来体现。 2....全局作用 在代码任何地方都能访问到对象拥有全局作用,一般来说以下几种情形拥有全局作用: 最外层函数和在最外层函数外面定义变量拥有全局作用 var outVariable = "我是最外层变量...——要到创建 fn 函数那个作用域中取,无论 fn 函数将在哪里调用。 所以,不要在用以上说法了。相比而言,用这句话描述会更加贴切: “要到创建这个函数那个”。...}) () //直接调用函数 }) () //直接调用函数 在上面代码JavaScript 引擎首先在最内层活动对象查询属性 a、b、c 和 d,从中只找到了属性 d,并获得它值(

    2.2K10

    【说站】javascript函数作用介绍

    javascript函数作用介绍 1、调用函数时创建函数作用函数执行后销毁函数作用。 2、每次调用函数都会创建一个新函数作用,它们是相互独立。...全局作用变量可以在函数作用域中访问,函数作用变量不能在全局作用域中访问。...当在函数作用域中操作一个变量时,它会首先在自己作用域中找到,如果有,它会直接使用,如果没有,它会在上一级作用域中找到,直到找到整体作用,如果整体作用域中仍然没有,它报错ReferenceErrror...函数作用介绍,希望对大家有所帮助。...更多Javascript学习指路:Javascript 推荐操作环境:windows7系统、jquery3.2.1版本,DELL G3电脑。

    41640

    函数创建.作用,自调用

    和php类型不详说了function funname{ }创建         function sum(x,y){             ...        qiuhe=sum(5,3);         alert(qiuhe);         qiuhe2=sum(1,8);         document.write(qiuhe2); 函数作用...: ps:在函数外声明变量作用为全局变量,任何地方都可以使用             函数内部通过var声明变量是局部变量,内部没有通过var创建变量是全局变量             作用不是全局变量就是局部变量...        qiuhe=sum(5,3);         alert(qiuhe);         qiuhe2=sum(1,8);         document.write(qiuhe2); 函数调用...:    //用括号将函数体包围,等同于调用函数名,加括号表示调用;自调用等于括号包围函数体加括号         (function test(){ alert('函数调用,你好年轻人!')})

    64320

    理解 JavaScript 作用

    作用JavaScript 一个重要而又模糊概念。只有正确使用 JavaScript 作用,才能使用优秀设计模式,帮助你规避副作用。...函数作用 正如我们在词法作用域中看到,解释器在当前作用声明变量,也为这函数声明某变量会在函数作用当中。这种作用限制于函数本身及其内部定义其他函数。...ES6,let 和 const 定义便来那个都显式地声明了当前作用为块级作用而不是函数作用。也就是说,这些变量只能在声明它们的当前所属访问,这些块可以由 if,for语句或函数生成。...IIFE 立即执行函数表达式(IIFE)是一种非常流行 JavaScript 模式,它允许函数创建新块级作用。IIFE仅仅是函数表达式,解释器一旦经过该函数时就会立即执行它。...作用不同类型,以及我们如何使用一些设计模式来利用作用优势做了详尽介绍。

    93010

    12 - JavaScript 作用

    原文地址:https://dev.to/bhagatparwinder/scope-in-javascript-3jim JavaScript 作用规定了一个变量或函数可用范围。...根据变量或函数声明位置它们或许只能在个别 JavaScript 代码块可用在其他地方则不行。我们在 JavaScript 中会接触到三种作用。...Function or Local Scope 当在一个函数声明一个变量时,它只能在函数中使用外面无法使用。因为它作用只归属于函数。...Block Scope 块级作用是被定义在一对大括号。根据定义函数是一个快,但函数还有更小快。函数 for loop 或 if 语句都有它们自己块级作用。...词法作用JavaScript 中使用作用模型。变量或函数作用是它们被定义时所在作用。 • 词法作用又叫静态作用。 • 一个声明 被调用作用 不一定是它词法作用

    57230

    Javascript作用理解?

    JavaScript作用JavaScript语言中有两种类型作用: 全局作用 局部作用 函数内部定义变量存在于局部作用,而在函数外部定义变量存在于全局作用。...当调用时,每个函数都创建一个新作用。 全局作用 当你在document开始写JavaScript时,你已经就在全局作用内了。...在整个JavaScriptdocument,只有一个全局作用。如果变量在函数之外定义,则在全局作用内。...每次调用一个函数都有不同作用。这意味着,具有相同名称变量可以在不同函数中使用。这是因为这些变量绑定到各自函数,每个函数有不同作用,在其他函数是不可访问。...我们可以使用一种称为 模块模式 闭包类型,它允许我们使用对象公共和私有的作用来对我们函数进行调整。

    90930

    《你不知道JavaScript》:函数作用和块作用

    《你不知道JavaScript》第一部分作用和闭包第2篇。 昨天讲到作用,回顾下概念:作用是一套用来管理引擎如何在当前作用以及嵌套作用域中根据标识符名称进行变量查找规则。...常见作用形式 在JS,最常见作用函数作用,其他结构通常不会创建作用。但随着js迭代,现在也有了块作用,将在后面讲到。...而函数作用含义是指:属于这个函数全部变量都可以在整个函数范围内使用及复用,包括在嵌套函数作用域中也可以使用。 函数作用常规套路是,先声明一个函数,然后向函数添加代码实现。...console.log(fn); //ReferenceError: fn is not defined 上例,假设代码所处作用为全局作用,foo函数访问作用是全局作用,fn函数访问作用被绑定在函数表达式自身函数而非所在全局作用...匿名函数表达式应用非常常见,很多工具或库都有用到,但其也存在几个缺点: 匿名函数在栈不显示有意义函数名,调试困难; 由于没有函数名,所以如需调用自身,比如递归或者事件触发后事件监听器需要解绑自身等,

    95730

    【Groovy】Groovy 脚本调用 ( Groovy 脚本作用 | 本地作用 | 绑定作用 )

    文章目录 一、Groovy 脚本作用 ( 本地作用 | 绑定作用 ) 二、Groovy 脚本作用代码示例 一、Groovy 脚本作用 ( 本地作用 | 绑定作用 ) ----...2 个变量都可以打印 , 都是合法变量 ; 但是有如下区别 ; age 变量作用是 本地作用 , 相当于 private 私有变量 ; age2 变量作用是 绑定作用 , 相当于 public...共有变量 ; 声明一个方法 , 在下面的函数 , 可以使用 绑定作用变量 , 不能使用 本地作用变量 ; =/* 定义一个函数 在下面的函数 , 可以使用 绑定作用变量...错误 ; 二、Groovy 脚本作用代码示例 ---- 代码示例 : 注意 , 此时代码中有错误 , println "$age" 代码 , age 是本地作用变量 , 在函数无法访问到..., 会报错 ; 函数只能访问 绑定作用变量 ; /* 下面的 age 和 age2 都是变量定义 age 变量作用是 本地作用 age2 变量作用是 绑定作用

    1.3K20

    深入理解JavaScript作用作用

    JavaScript 作用作用链对于开发者来说至关重要,它们是理解和使用 JavaScript 基础,例如代码模块化与封装,作用允许开发者将变量和函数限制在特定范围内,这有助于代码模块化...最后对调试与错误处理, 理解作用作用链可以帮助开发者更好地调试代码,追踪错误来源,因为变量查找和作用规则是错误产生原因之一。作用作用是变量和函数可访问上下文。...在 JavaScript ,有两种主要作用类型:全局作用(Global Scope)和 局部作用(Local Scope)全局作用全局作用是指在代码执行最外层定义变量和函数。...在 JavaScript 函数创建了一个新作用。...JavaScript 在查找变量时使用规则

    10520

    JavaScript 函数作用和块作用不完全指北

    那么究竟什么时候才会生成新作用呢?最常见答案是 JavaScript 具有基于函数作用,这意味着每声明一个函数都会为其自身创建一个作用。...但是我们可以反过来想,换一个角度来理解函数,这样会有助于更好地理解函数作用。从所写代码挑出一个代码片段,然后使用函数包装它们。...,引入了额外污染,必须声明一个具名函数 foo() ,这污染了所在作用(在示例是全局作用)。...其次,必须显式地通过函数名(foo()) 调用这个函数才能运行其中代码。 如果函数不需要函数名(或者至少函数名可以不污染所在作用), 并且能够自动运行,这将会更加理想。...所以我们在使用匿名函数表达式时应该着重考虑代码可读性、可理解性。 块作用 尽管函数作用是最常见作用单元, 当然也是现行大多数 JavaScript 中最普遍设计方法。

    62510

    Javascript作用问题构造函数变量

    构造函数new对于使用。代表创建对象。此外,它可以被用作普通函数调用,因为它也是一个功能。...function Person(name) { this.name=name; } Person(12); alert(window.name);//12 能够看到当构造函数被当成普通函数调用时候...this代表是全局window对象。 非常显然把构造函数当成普通函数调用,不是好做法。 也没有什么道理要这么做。 实际应该杜绝这样奇怪使用方法,以免产生奇怪问题。...per.name);// aty alert(per.name1);//undefined alert(per.name2);//undefined alert(window.name2);//boy 构造函数定义变量使用...会加入到window对象。这样解释了为什使用什么样构造thiskeyword。 版权声明:本文博客原创文章。博客,未经同意,不得转载。

    95920

    java作用-我是这样理解JavaScript作用

    感觉没有说服力,太苍白了话不多说,接下来一起学习吧~   编程当中作用作用   我把作用当作成一个‘对象’,这个对象有自己脾气(ps:脾气即规则)但是我们没办法用编码方式访问该对象,它是存在于引擎内部...,根据规则用来管理引擎如何在当前作用进行工作。...函数作用   函数作用是在函数内部声明变量(ps:可称局部变量),那么变量有效范围一般是在函数内部可访问。当然也有特殊情况(ps:闭包除外)。   ...这也验证了js是静态作用概念。它和执行上下文是两个不同概念。(ps:勿混淆)   执行上下文是根据在哪里调用执行确定执行上文,它是动态。切记切记!!...关于执行上下文一个属性this指向可阅读这篇文章this关键字你真的彻底搞懂了吗   总结   再次学习作用之后,对于知识有新认知。记录并分享是一件很棒过程~如有新见解和问题评论区见!

    39220

    JavaScript 基础(五) 函数 变量和作用

    函数定义和调用    定义函数,在JavaScript,定义函数方式如下:       function abs(x){         if(x >=0){           ...name:'foo'       }     } 变量作用   在JavaScript ,用var 声明实际上是有作用。...y = 'Bob';     } 由于JavaScript这一怪异“特性”,我们在函数内部定义变量时,请严格遵守“在函数内部首先申明所有变量”这一规则。...不在任何函数内定义变量就具有全局作用,实际上,JavaScript 默认有一个全局作用变量实际上呗绑定到window 一个属性。     ...局部作用 由于JavaScript 变量作用实际上是函数内部,我们在for 循环等语句块是无法定义具有无法定义具有局部作用变量

    94390

    JavaScript 作用和声明提升

    JavaScript Scoping 在 ES6 之前,JavaScript 没有块状作用(block-level scope),只有函数作用(function-level scope)。...关于 ES6 使用 let 和 const 声明块级作用内容,可以参考 JavaScript let 和 const。...关于 ES5 严格模式内容可以参考 JavaScript 严格模式。 关于 JavaScript this 详细用法可以参考 JavaScript this。...,一个变量以四种方式进入作用 scope: 语言内置:所有的作用域中都有 this 和 arguments 关键字(global 没有 arguments); 形式参数:函数参数在函数作用域中都是有效...而变量解析顺序(优先级),与变量进入作用 4 种方式顺序一致,如果一个变量名字与函数名字相同,那么函数名字会覆盖变量名字,无论其在代码顺序如何,但是名字初始化却是按其在代码书写顺序进行

    54620

    全局作用函数作用、块级作用理解

    1.前言 作用是任何一门编程语言中重中之重,因为它控制着变量与参数可见性与生命周期。很惭愧,我今天才深入理解JS作用..我不配做一个程序员.....开玩笑,什么时候理解都不晚,重要是理解了以后能不能深深地扎在记忆里,不能,那就写下来 2.块级作用 在一个代码块(括在一对花括号一组语句)定义所有变量在代码块外部是不可见。...ES6新增概念,在ES5是没有的,ES5没有? 没有的时候我们代码也写好好,现在新增概念,我不用不行吗? 来,拋一个典型问题出来,你就明白块级作用出现重要性了。...//全局变量 (function(){ for(var i = 0;i < 5; i++){} })() console.log("i =",i); //i = 100 ES6<em>中</em>为什么会出现块级<em>作用</em><em>域</em><em>的</em>概念...,是可以修改内部属性<em>的</em>,数组同理; 5.总结 主要总结一下块级<em>作用</em><em>域</em>、以及块级<em>作用</em><em>域</em>出现<em>的</em>意义,方便更好<em>的</em>记住。

    3K10

    理解JavaScript作用

    大纲 作用 作用嵌套与作用链 查询异常 词法作用(静态作用函数作用 全局作用 块级作用 变量提升机制 函数优先 作用 是什么? 作用是指程序源代码定义变量区域。...作用规定了如何查找变量,也就是确定当前执行代码对变量访问权限。 作用嵌套与作用链 当一个块或函数嵌套在另一个块或函数时,就发生了作用嵌套。...作用嵌套查询规则: 首先,JS引擎从当前执行作用开始查找变量。 然后,如果找不到,引擎会在外层嵌套作用域中继续查找。 最后,直到找到该变量,或抵达最外层全局作用为止。...词法作用查找规则是:作用查找是从内到外进行查找,直到找到第一个匹配标识符时停止。 而与词法作用相对是动态作用函数作用是在函数调用时候才决定。...“重复”声明代码函数会首先被提升,然后才是变量。

    69720

    JavaScript作用

    学习和使用Javascript一晃都7年了,最近才感觉自己对他才有顿悟,不知道是否来得有点迟。本文归纳了我对 JS作用理解,希望得学习有所帮助。...一、作用理论理解      从入门Javascript时,无论是学校老师,还是你工作老司机,都会很认真的考虑你,Js中有一个全局作用,然后他包含很多(如:由function、object创建作用...如Js作用域中可以任意使用Number、String等对象,但是没办法直接调用一个作用平级对象方法。 3....如Js需要访问一个平级作用内容时,那你就需要拿到被访问引用。 4....作用创建与执行:    2.1 创建阶段[函数调用,但内部代码还没开始执行]    2.2 创建 作用链    2.3 创建变量  函数 以及参数    2.4 决定this值(也就是作用

    664100
    领券