怎样理解在函数中声明var x = y = 1后调用函数时, x是局部变量, y是全局变量

下面这段代码在执行的时候, 打印的结果是1, Error: undefined;

function fn() {
    var x = y = 1;
}
fn();
console.log(y); // 1;
console.log(x); // Error: undefined;

原因是这个函数在执行的时候, 是先执行的: y = 1; 因为这里的y在声明赋值时没有使用var, 因此会默认成为全局变量, 然后将一个全局变量的值赋值给一个局部变量x;

其实际的执行过程如下:

var y = 1;
function fn() {
    var x = y;
}

原文地址:https://www.cnblogs.com/aisowe/p/11634923.html

时间: 2024-10-10 06:59:01

怎样理解在函数中声明var x = y = 1后调用函数时, x是局部变量, y是全局变量的相关文章

065-PHP函数中声明全局变量

<?php function test(){ //定义函数 global $a; //声明全局变量 $a=7; echo "函数内: ".$a . "<br>"; } test(); //调用函数 echo "函数外: ".$a; ?> 原文地址:https://www.cnblogs.com/tianpan2019/p/10995284.html

一个可以不传参数就可以在函数中改变调用者内部的变量数据的函数

先贴出代码 void fun() { int *p= (int*)*(&p+1); p-=1; *p=100; } int main() { int a=10; fun(); cout<<a<<endl; return 0; } 输出结果是100: 下面为了说明里面的栈帧原来我使用另一个和他相同的代码进行分析,代码与分析如下: void fun(int x) { int *p= (int*)*(&p+1); p-=1; *p=100; } int main() {

Jquery中each方法如何在其所调用函数中退出遍历

JQuery中each 方法退出 当次遍历 直接在 each的匿名函数中写 return true;即可跳出当次遍历:退出所有遍历 通过return false 实现. $(".check").each(function(index,ele){ XXXXXXXXXXXXXXXXXX; XXXXXXXXXXXXXXXXXX; return ture; 或者 return false://可以控制跳出遍历 XXXXXXXXXXXXXXXXXX; XXXXXXXXXXXXXXXXXX; })

python装饰器中@wraps作用--修复被装饰后的函数名等属性的改变

Python装饰器(decorator)在实现的时候,被装饰后的函数其实已经是另外一个函数了(函数名等函数属性会发生改变),为了不影响,Python的functools包中提供了一个叫wraps的decorator来消除这样的副作用.写一个decorator的时候,最好在实现之前加上functools的wrap,它能保留原有函数的名称和docstring.废话不多说,上俩栗子就能搞明白! 实例一: 不加wraps # -*- coding=utf-8 -*- from functools imp

37 py为什么要使用函数函数中添加文本注释 没有返回值的函数

第一课:为什么要使用函数 首先 要知道 本课程的主要讲解的内容为: 1.为什么要创建函数 2.***函数的概念是:将一段可能别重用的代码封账到一个代码段里面,然后通过函数的参数 ,控制函数的动态部分.// 如何来定义python中的函数和使用函数 *** 3.如何创建一个函数 4.如何为函数添加文档注释,如何获取函数的文档注释 5.函数如何返回一个值 6.改变函数的参数值 7.关键字参数与参数默认值 8.可变参数 9.如何将序列中的元素单独作为参数值传递给函数 10.函数中的作用域 11.递归函

Python学习笔记#函数中使用文档,让你的函数更容易理解

>>> def intadd(a,b): 'this is a test of the doc of function' return a+b >>> intadd(2,3) 5 >>> intadd.__doc__ 'this is a test of the doc of function' >>>

函数间传参实例(前一个函数产生的数据传到给后一个函数应用)

场景描述:A函数通过一系列的请求与执行,创建并产生订单 B函数获取该订单,然后查询该订单,获取订单信息 本次实例的关键就是,A产生的订单号,传给B,实现函数间传参 代码如下: import requests # 先导入包,这是必须的 import json ordid="190416111501017074" #A函数产生的订单号,具体过程不在此书写 #ordid为定义的变量,需要写到下面函数的括号中,可理解为把变量ordid传到函数search中 def search(ordid):

c++中函数中变量内存分配以及返回指针、引用类型的思考

众所周知,我们在编程的时候经常会在函数中声明局部变量(包括普通类型的变量.指针.引用等等). 同时,为了满足程序功能的需要,函数的返回值也经常是指针类型或是引用类型,而这返回的指针或是引用也经常指向函数中我们自己声明的局部变量. 这样,程序在某些情况下就可能存在一定的问题.看似很简单的问题,通过仔细的分析,我们就能够更好的理解c++中内存分配和释放的问题. 好,废话不多说,我们进入正题.首先,简单介绍一下程序的内存区域的分配: 程序的内存分配 ①堆区(heap).这一部分主要是由程序开发人员自己

Javascript中的var和let

引子 我们先来看一个常见的例子, function func(){ for (var i = 0; i < 10; i++) { setTimeout(function(){ console.log(i) },1000) } } func() 输出的结果并不是我们预期的 0-9,而是输出了十个 10.而当我们把其中的 var 改成 let ,结果就成了 0-9. 原因 var 使用的是函数作用域,即 for 循环中的 var i 实际上在整个 func 函数中都有效.而 setTimeout 中