js访问函数内部的变量(三种方法)

摘要:
Js通过return访问函数内部的变量:functionbar{vartestValue='inner';returntestValue+value;}安慰日志;//“Innerfun”通过闭包访问函数内部变量:functionbar{vartestValue='inner';varrusult=testValue+value;functioninner(){returnrusult;};returninnser();}安慰日志;//“Innerfun”立即执行函数:使用它来分离全局范围并形成一个单独的函数范围。
js访问函数内部的变量(三种方法)
通过return访问:
function bar(value) {
  var testValue = 'inner';
  
  return testValue + value;
}

console.log(bar('fun'));		// "innerfun"
通过 闭包 访问函数内部变量:
function bar(value) {
  var testValue = 'inner';
  
  var rusult = testValue + value;
  
  function innser() {
     return rusult;
  };
  
  return innser();
}

console.log(bar('fun'));		// "innerfun"
立即执行函数:

用它来分离全局作用域,形成一个单独的函数作用域。

<script type="text/javascript">

    (function() {

      var testValue = 123;

      var testFunc = function () { console.log('just test'); };

    })();

    console.log(window.testValue);		// undefined
    
    console.log(window.testFunc);		// undefined
    
</script>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

它能够自动执行 (function() { //... })() 里面包裹的内容,能够很好地消除全局变量的影响;

补充一下es6里面的块级作用域:

块级作用域:
for(var i = 0; i < 5; i++) {
  // ...
}

console.log(i)				// 5

很明显,用 var 关键字声明的变量,在 for 循环之后仍然被保存这个作用域里;

这可以说明: for() { }仍然在,全局作用域里,并没有产生像函数作用域一样的封闭效果。

免责声明:文章转载自《js访问函数内部的变量(三种方法)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Oracle中组合索引的使用详解(转)【SEED Labs】TCP Attacks Lab下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

jmeter中变量拼接使用的场景

应用场景:对居民列表提取个人信息后,创建血压值 1、提取居民列表中所需的字段信息 2、添加循环控制器并以debug postprocessor中展示的任意字段的统计总数,作为循环次数,这里选用“${userId_matchNr}” 3、在循环控制器下添加血压的http请求,将报文中对应的字段写成变量形式即可完成循环添加血压值; 技巧:这里存在对提取值...

【js重学系列】作用域

作用域 在 JavaScript 中, 作用域为可访问变量,对象,函数的集合。 在 Javascript 中,作用域分为 全局作用域 和 函数作用域 什么是作用域呢,简单的说,作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期。 全局变量 变量在函数外定义,即为全局变量。 全局变量有 全局作用域: 网页中所有脚本和函数均可使...

MATLAB的基本元素

MALTAB程序的基本数据单元是数组,MATLAB 的变量名必须以字母开头,后面可以跟字母,数字和下划线(_).只有前31个字符是有效的;如果超过了31 个字符,基余的字符将被忽略。如果声明两个变量,两变量名只有第32 个字符不同,那么MATLAB 将它们当作同一变量对待。要注意的是:确保你所声明的变量名前31 个字符是独一无二的。否则,MATLAB 将无...

R语言数据挖掘方法及应用

R语言数据挖掘方法及应用 第1篇 起步篇:R语言数据挖掘入门并不难 1 数据挖掘与R语言概述 1.1 为什么要学习数据挖掘和R语言 1.2 什么是数据挖掘 1.3 数据挖掘能给出什么 1.3.1 数据挖掘结果有哪些呈现方式 1.3.2 数据挖掘结果有哪些基本特征 1.4 数据挖掘能解决什么问题 1.4.1 数据预测 1.4.2 发现数据的内在结构 1.4....

什么是闭包?闭包的优缺点?

闭包(closure)是javascript的一大难点,也是它的特色。很多高级应用都要依靠闭包来实现。 1、变量作用域 要理解闭包,首先要理解javascript的特殊的变量作用域。 变量的作用域无非就两种:全局变量和局部变量。 javascript语言的特别之处就在于:函数内部可以直接读取全局变量,但是在函数外部无法读取函数内部的局部变量。 注意点:在函...

C#遇上WINCC

前言 在工控领域中,WinCC仍然占有很大的市场份额。很多时候我们说学习C#开发上位机可以取代传统的组态软件,两者就像冤家一样,然而,即使是冤家,也会有联合的时候。比如,当我们的项目已经采用WINCC并已经落地,如果我们学会C#,能做哪些事情呢?今天跟大家分享一下如何使用C#/.NET联合西门子WinCC实现数据通信。 环境搭建 众所周知,WinCC作为...