作用域

javascript变量的作用域

此生再无相见时 提交于 2020-02-09 02:11:37
基本类型和引用类型 基本类型值指的是简单的数据段,而引用类型值指的是那个可能由多个值组成的对象 讲一个值赋值给变量时,javascript解析器首先要确定是基本类型还是引用类型,基本数据类型可以直接操作保存在变量中的值,而引用数据类型的值是保存在内存中的对象,在操作对象是,实际上操作的是对象的引用而不是实际的对象 变量的赋值 如果从一个变量上向另一个变量上复制__基本数据类型__的值,会在变量对象上创建一个新值,然后把该值复制到新变量的位置上,这个很好理解,来看下例子: var num1 = 5; var num2 = num1;   这是基本数据类型,而引用类型呢?其实同样会将原来变量上的值复制一份到新的变量当中,只不过,复制的其实是原来变量的一个指针,而这个指针指向存储在堆中的一个对象。复制完成后,两个变量都指向了堆中的同一个对象,所以改变其中一个的值,会对另外一个产生影响。有以下代码 var obj1 = new Object(); var obj2 = obj1; obj1.name = "Nicholas"; alert(obj2.name); //"Nicholas"    传递参数 在javascript里面,参数的传递都是按照`值类型来传递`的,即使你传入的是一个引用类型 function setName(obj) { obj.name = "Nicholas";

javascript变量的作用域

孤者浪人 提交于 2020-02-09 02:10:33
一、基本类型和引用类型 基本类型值指的是简单的数据段,而引用类型值指的是那个可能多个值组成的对象。 将一个值给变量时,javascript解析器首先要确定是基本类型还是引用类型,基本数据类型可以直接操作保存在变量中的值,而引用数据类型的值是保存在内存中的对象,在操作对象时,实际上操作的是对象的引用而不是实际的对象。 二、变量的赋值 如果从一个变量上向另一个变量上复制 基本数据类型 的值,会在变量对象上创建一个新值,然后把该值复制到新变量的位置上, 如下代码: var num1 = 5; var num2 = num1; 引用类型, 其实同样会将原来变量上的值复制一份到新的变量当中,只不过,复制的其实是原来变量的一个指针,而这个指针指向存储在堆中的一个对象。复制完成后,两个变量都指向了堆中的同一个对象,所以改变其中一个的值,会对另外一个产生影响。如下代码: var obj1 = new Object(); var obj2 = obj1; obj1.name = "Nicholas"; alert(obj2.name); //"Nicholas"    三、传递参数 在javascript里面,参数的传递都是按照 值类型来传递 的,即使你传入的是一个引用类型 function setName(obj) { obj.name = "Nicholas"; } var person =

js作用域

China☆狼群 提交于 2020-02-08 16:04:45
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head> <title>js作用域</title></head><body><!--在py中:模块,函数,类有自己的作用域--><script> c='beijing'; f=function(){ var c='shanghai'; function inner(){ console.log('456'+c); } return inner; }; f()(); function bar(){ console.log('123'+c)} f=function(){ c='shanghai'; return bar; }; f()() //运行结果;456shanghai // 123shanghai</script></body></html> 来源: https://www.cnblogs.com/startl/p/12283483.html

python编程学习进度八

大城市里の小女人 提交于 2020-02-08 15:38:59
今天学习的是python编程中的关于作用域与参数的知识,下面是学习的总结: 1、变量名解析的LEGB原则:变量名引用分为三个作用域进行查找,本地作用域(L,每次调用函数时创建)、上一级调用的本地作用域(E)、全局作用域(G,模块作用域)、内置作用域(B,预定义的变量名如open)。仅对简单变量生效,对于特定对象的变量如object.spam,查找规则规则完全不同。内置作用域是一个名为__builtin__的内置模块,import后才可以使用,这时可以用dir(__buildin__)查看预定义的变量名。根据LEGB原则,在本地作用域定义一个新的open = 'spam'会导致open()函数不能被调用。global用于全局变量声明。 在模块导入时,导入其他模块的模块拥有了对其他模块变量的修改权,这使得被导入模块的维护变得复杂:维护者不知道第二个模块什么情况下会修改变量。因此最好的解决办法是不这样做,在文件间进行通信的最好办法就是通过调用函数,传递参数,然后获得返回值(用函数提供修改变量的接口,并且告诉维护者这个变量可以被其他模块改变)。 工厂函数(又称闭合),是能记住嵌套作用域的变量值的函数。示例: >>> def maker(N): ... def action(X): ... return X ** N ... return action ... >>> f = maker(2

jsp中的JSTL与EL表达式用法及区别

眉间皱痕 提交于 2020-02-08 01:11:40
对于JSTL和EL之间的关系,这个问题对于初学JSP的朋友来说,估计是个问题,下面来详细介绍一下JSTL和EL表达式他们之间的关系,以及JSTL和EL一些相关概念! EL相关概念 JSTL一般要配合EL表达式一起使用,来实现在jsp中不出现java代码段。所以我们先来学习EL表达式 EL主要用于查找作用域中的数据,然后对它们执行简单操作;它不是编程语言,甚至不是脚本编制语言。通常与 JSTL 标记一起作用,能用简单而又方便的符号来表示复杂的行为。 EL基本格式 EL表达式的格式:用美元符号($)定界,内容包括在花括号({})中; 例如: ${loginInfoBean.suser} 此外,您可以将多个表达式与静态文本组合在一起以通过字符串并置来构造动态属性值; 例如:Hello {loginInfoBean.suser} ${loginInfoBean.spwd} EL语法组成-标识符 EL表达式由标识符、存取器、文字和运算符组成。 标识符用来标识存储在作用域中的数据对象。EL 有 11 个保留标识符,对应于 11个EL隐式对象。除了11隐式对象外,假定所有其它标识符都用来标识作用域的变量。 标识符 例: ${abc} 相当于<%=pageContext.findAttribute(“abc”)%> ${og_1} <%=pageContext.findAttribute(“og

jsp中的EL和JSTL的关系

时光总嘲笑我的痴心妄想 提交于 2020-02-08 01:01:38
对于JSTL和EL之间的关系,这个问题对于初学JSP的朋友来说,估计是个问题,下面来详细介绍一下JSTL和EL表达式他们之间的关系,以及JSTL和EL一些相关概念! EL相关概念 JSTL一般要配合EL表达式一起使用,来实现在jsp中不出现java代码段。 所以我们先来学习EL表达式 EL主要用于查找作用域中的数据,然后对它们执行简单操作;它不是编程语言,甚至不是脚本编制语言。通常与 JSTL 标记一起作用,能用简单而又方便的符号来表示复杂的行为。 EL基本格式 EL表达式的格式:用美元符号($)定界,内容包括在花括号({})中; 例如: ${loginInfoBean.suser} 此外,您可以将多个表达式与静态文本组合在一起以通过字符串并置来构造动态属性值; 例如:Hello {loginInfoBean.suser} ${loginInfoBean.spwd} EL语法组成-标识符 EL表达式由标识符、存取器、文字和运算符组成。 标识符用来标识存储在作用域中的数据对象。EL 有 11 个保留标识符,对应于 11个EL隐式对象。除了11隐式对象外,假定所有其它标识符都用来标识作用域的变量。 标识符 例: ${abc} 相当于<%=pageContext.findAttribute(“abc”)%> ${og_1} <%=pageContext.findAttribute(“og

jsp中的JSTL与EL表达式用法及区别

不打扰是莪最后的温柔 提交于 2020-02-08 00:54:44
对于 JSTL和 EL之间的关系 ,这个问题对于初学 JSP的朋友来说 ,估计是个问题 ,下面来详细介绍一下 JSTL和 EL表达式他们之间的关系 ,以及 JSTL和 EL一些相关概念 ! EL相关概念 JSTL一般要配合 EL表达式一起使用 ,来实现在 jsp 中不出现 java代码段。所以我们先来学习 EL表达式 EL主要用于查找作用域中的数据 ,然后对它们执行简单操作;它不是编程语言,甚至不是脚本编制语言。通常与 JSTL 标记一起作用,能用简单而又方便的符号来表示复杂的行为。 EL基本格式 EL表达式的格式:用美元符号( $)定界 ,内容包括在花括号( {})中 ; 例如 : ${loginInfoBean.suser} 此外,您可以将多个表达式与静态文本组合在一起以通过字符串并置来构造动态属性值 ; 例如 :Hello {loginInfoBean.suser} ${loginInfoBean.spwd} EL语法组成 -标识符 EL表达式由标识符、存取器、文字和运算符组成。 标识符用来标识存储在作用域中的数据对象。 EL 有 11 个保留标识符,对应于 11个 EL隐式对象。除了 11隐式对象外 ,假定所有其它标识符都用来标识作用域的变量。 标识符 例 : ${abc} 相当于 <%=pageContext.findAttribute(“abc”)%> ${og_1}

前端-函数-合集

冷暖自知 提交于 2020-02-07 23:51:17
1.JavaScript this指针、闭包、作用域 this:指向调用上下文 闭包:内层作用域可以访问外层作用域的变量 作用域:定义一个函数就开辟了一个局部作用域,整个js执行环境有一个全局作用域 来源: CSDN 作者: zmmsdk15225185085 链接: https://blog.csdn.net/zmmsdk/article/details/104215010

对Python新手编程过程中如何规避一些常见问题的建议

心不动则不痛 提交于 2020-02-07 17:42:17
这篇文章收集了我在Python新手开发者写的代码中所见到的不规范但偶尔又很微妙的问题。本文的目的是为了帮助那些新手开发者渡过写出丑陋的Python代码的阶段。为了照顾目标读者,本文做了一些简化(例如:在讨论迭代器的时候忽略了生成器和强大的迭代工具itertools)。 对于那些新手开发者,总有一些使用反模式的理由,我已经尝试在可能的地方给出了这些理由。但通常这些反模式会造成代码缺乏可读性、更容易出bug且不符合Python的代码风格。如果你想要寻找更多的相关介绍资料,我极力推荐The Python Tutorial或Dive into Python。 迭代 range的使用 Python编程新手喜欢使用range来实现简单的迭代,在迭代器的长度范围内来获取迭代器中的每一个元素: for i in range(len(alist)): print alist[i] 应该牢记:range并不是为了实现序列简单的迭代。相比那些用数字定义的for循环,虽然用range实现的for循环显得很自然,但是用在序列的迭代上却容易出bug,而且不如直接构造迭代器看上去清晰: for item in alist: print item range的滥用容易造成意外的大小差一(off-by-one)错误,这通常是由于编程新手忘记了range生成的对象包括range的第一个参数而不包括第二个

js变量和作用域

◇◆丶佛笑我妖孽 提交于 2020-02-07 00:39:23
js变量和作用域 (一)js变量 1. 变量数据类型和堆栈 1.1 数据类型 1.2 堆栈 2. 变量值的比较 3. 参数的传递 4. 类型检测 4.1 typeof 4.1 instanceof (二)js变量的作用域与解析 1. 变量对象及作用域链 2. js解析机制 2.1 预解析 2.2 解析冲突 2.3 逐行解析 (一)js变量 1. 变量数据类型和堆栈 1.1 数据类型 基本数据类型 数字 字符串 布尔值 undefined null 基本数据类型的值不能被修改,其值保存在栈中,当变量赋予新的值,栈中的值被覆盖 引用数据类型 对象 数组 引用数据类型的值可以被修改,其地址保存在栈中,值保存在堆中 1.2 堆栈 栈 堆 基本数据类型 a 值 引用数据类型 b 地址1 地址1 { } c 地址2 地址2 { } 2. 变量值的比较 基本数据类型 由于其值保存在栈中,每次比较都是栈中的值进行比较 引用数据类型 其地址保存在栈中,每次比较进行的都是栈中地址的比较,从堆栈表格中就可以看出,两个相同的对象,其保存在栈中的地址是不相同的 var a = { } , b = { } ; console . log ( a === b ) ; //得出结果为flase 总结:js中变量的比较是保存在栈中内容的比较 3. 参数的传递 基本数据类型 参数复制定义变量的值后进行传递 var a