美文网首页
JS | Javascript中函数的作用域

JS | Javascript中函数的作用域

作者: 码农学禅 | 来源:发表于2018-09-11 12:00 被阅读0次

Javascript中变量有两种作用域:

1.全局变量:声明在函数外部的变量(所有没有var直接赋值的变量都属于全局变量)

2.局部变量:声明在函数内部的变量(所有没有var直接赋值的变量都属于全局变量)

Javascript中函数也是对象,所以函数的作用域也遵循上述规则。大多数时候,函数不是在另一个函数内部声明,这样的函数就是全局的,有可能会造成冲突。下面以例子来说明函数的作用域,以及如何来声明“局部”函数。所有代码均亲测。

Step 1. 验证函数作用域是全局的

js_globalfunc.html

Step 2.在函数内部定义函数

这个文件实际定义了两个Script:第一个定义了函数doSomething,第二个可以正确调用doSomething,说明这样定义的函数是全局的。

js_func_localized_via_func.html

这个文件把函数doSomething定义在另一个函数A里面,这样doSomething的作用域就是函数A内部。通过运行结果可以知道:在函数A内部的函数test可以调用doSomething,但在函数A外部,doSomething就没有被定义了。

Step 3. 在匿名函数内部定义函数

把Step 2的函数A改成匿名函数:

js_func_localized_via_anonymousfunc.html

执行结果和Step 2类似。需要注意匿名函数的写法:

1. 直接写function () {...}是不可以的,必须用()括起来,即(function () {...})

2. 执行匿名函数直接在函数后面加上(),即第17行的()

Step 4. 用匿名函数封装成员变量和方法

可以用匿名函数把变量和方法封装起来,类似对象的定义:

js_object.html

代码self-explaining,就不再解释了。

进一步可以理解RequireJS中define的原理。事实上,上面step 4的代码即来自这篇文章。

相关文章

  • JavaScript作用域学习笔记

    @(JS技巧)[JavaScript, 作用域] JavaScript作用域学习笔记 概念: 作用域就是变量与函数...

  • js 变量提升和函数提升

    在js中只有两种作用域,全局作用域和函数作用域,在ES6之前,js是没有块级作用域。 JavaScript 代码的...

  • 作用域-ES6

    上一篇文章介绍JavaScript的作用域时我说JS中作用域有:全局作用域、函数作用域,没有块作用域。但是大神提醒...

  • 函数式编程

    JavaScript函数式编程 函数式编程的基础是一等函数(函数在js中作为一等公民)、作用域(词法作用域,动态作...

  • JavaScript函数作用域和声明提前

    函数作用域 JavaScript 中没有块级作用域,JavaScript 取而代之地使用了函数作用域。变量在声明它...

  • 浅谈js作用域链(scope chain)

    作用域链: JS权威指南指出”JavaScript中的函数运行在它们被定义的作用域里,而不是它们被执行的作用域里....

  • 2021-03-02

    js 1. 静态作用域因为 JavaScript 采用的是词法静态作用域,函数的作用域在函数定义的时候就决定了。 ...

  • JavaScript基础--变量作用域和预解析

    作用域 在JavaScript中{}外面的作用域, 我们称之为全局作用域 在JavaScript中函数后面{}中的...

  • JavaScript 作用域和作用域链

    JavaScript 作用域 作用域就是变量与函数的可访问范围。在JavaScript中,变量的作用域有全局作用域...

  • JavaScript 作用域

    在 JavaScript 中, 作用域为可访问变量,对象,函数的集合。 JavaScript 局部作用域 函数内声...

网友评论

      本文标题:JS | Javascript中函数的作用域

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