变量

JavaScript 变量

断了今生、忘了曾经 提交于 2020-02-27 12:27:19
变量 变量是指程序在运行时,必须暂时地存储一些完成工作所需的信息,在后台运行,不显示运行过程,这些信息就存储在变量中,会根据程序实际运行情况或具体步骤存储在变量里。 编写Javascript代码时,你必须告诉解释器你想要执行的每个步骤。有时候,需要提供给解释器的细节比你想象的要更多。 如果我们要计算一张桌子的面积,用数学公式是:面积=长*宽 例: 我们可以在脑海里计算,可是使用一段脚本让计算机来计算时,必须告诉计算机每一个详细步骤。要告诉计算机执行以下4个步骤。 1.记住桌子的长度 2.记住桌子的宽度 3.将长度乘以宽度,得到桌子的面积 4.将结果返回给用户 我们使用变量来记住桌子的长度和宽度。以后不论什么规格的矩形桌子都可以使用这段脚本来计算,而要做的仅仅是根据桌子的情况更改记录桌子 长度的变量值 的和记录桌子 宽度的变量值 。 我们知道计算机有 内存 和 磁盘 ,数据通常放在磁盘和内存中,但是 变量 放在内存中 ,用于临时保存信息,计算机一关机,变量的数据就没有了。 声明变量 在使用变量之前,需要先声明变量。 声明变量的形式如下: var 变量名; 声明 桌子 长度 的变量 1 var length; 说明:var 是关键字,Javascript解释器知道这个关键字就是用来创建变量的。 length是 变量名 ,也时候也叫 标识符 。 如果变量名包含不止一个单词,则通常采用

C++中指针和引用的区别

和自甴很熟 提交于 2020-02-27 10:27:17
1.指针和引用的定义和性质区别: (1)指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元;而引用跟原来 的变量实质上是同一个东西,只不过是原变量的一个别名而已。如: int a=1;int *p=&a; int a=1;int &b=a; 上面定义了一个整形变量和一个指针变量p,该指针变量指向a的存储单元,即p的值是a存储单元的地址。 而下面2句定义了一个整形变量a和这个整形a的引用b,事实上a和b是同一个东西,在内存占有同一个存储单 元。 (2)引用不可以为空,当被创建的时候,必须初始化,而指针可以是空值,可以在任何时候被初始化。 (3)可以有const指针,但是没有const引用; (4)指针可以有多级,但是引用只能是一级(int **p;合法 而 int &&a是不合法的) (5)指针的值可以为空,但是引用的值不能为NULL,并且引用在定义的时候必须初始化; (6)指针的值在初始化后可以改变,即指向其它的存储单元,而引用在进行初始化后就不会再改变了。 (7)”sizeof引用”得到的是所指向的变量(对象)的大小,而”sizeof指针”得到的是指针本身的大小; (8)指针和引用的自增(++)运算意义不一样; (9)如果返回动态内存分配的对象或者内存,必须使用指针,引用可能引起内存泄漏; 来源: https://www.cnblogs.com

js-ES6学习笔记-let命令

流过昼夜 提交于 2020-02-27 10:22:50
1、let命令   ES6新增了 let 命令,用来声明变量。它的用法类似于 var ,但是所声明的变量,只 在 let 命令所在的代码块内 有效。    for 循环的计数器,就很合适使用 let 命令。   下面的代码如果使用 var ,最后输出的是 10 。 var a = []; for (var i = 0; i < 10; i++) { a[i] = function () { console.log(i); }; } a[6](); // 10   上面代码中,变量 i 是 var 声明的,在全局范围内都有效。所以每一次循环, 新的 i 值都会覆盖旧值 ,导致最后输出的是最后一轮的 i 的值。(常见于闭包的考察)   如果使用 let ,声明的变量仅在块级作用域内有效,最后输出的是6。 var a = []; for (let i = 0; i < 10; i++) { a[i] = function () { console.log(i); }; } a[6](); // 6   上面代码中,变量 i 是 let 声明的,当前的 i 只在本轮循环有效,所以每一次循环的 i 其实都是一个新的变量,所以最后输出的是 6 。   JavaScript 引擎内部会记住上一轮循环的值,初始化本轮的变量 i 时,就在上一轮循环的基础上进行计算。   另外, for

002 对象的基本组成及引用

笑着哭i 提交于 2020-02-27 09:40:45
对象的基本组成和内存示意图 对象 Python中,一切皆对象。每个对象由: 标识(identity) 、 类型(type) 、 value(值) 组成。 标识用于唯一标识对象,通常对应于对象在计算机内存中的地址。使用内置函数id(obj)可返回对象obj的标识。 类型用于表示对象存储的“数据”的类型。类型可以限制对象的取值范围以及可执行的操作。可以使用type(obj)获得对象所属类型。 值表示对象所存储的数据的信息。使用print(obj)可以直接打印出值。 对象的本质:一个内存块,拥有特定的值,支持特定的类型的相关操作 用例补充 : 引用的本质 引用: 在python中,变量也是:对象的引用。因为变量存储的就是对象的地址。变量通过地址引用了“对象”。 变量位于 : 栈内存 对象位于 : 堆内存 Python是动态语言类型: 变量不需要显示声明类型。根据变量引用的对象,python解释器自动确定数据类型。 Python 是强类型语言 每个对象都有数据类型,只支持该类型支持的操作 来源: CSDN 作者: 软测窝 链接: https://blog.csdn.net/weixin_45375866/article/details/104526366

Java 基础 接口和多态

帅比萌擦擦* 提交于 2020-02-27 08:58:26
接口 接口的概念   接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”。   接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成。这样将功能的定义与实现分离,优化了程序设计。   请记住:一切事物均有功能,即一切事物均有接口。 接口的定义   与定义类的class不同,接口定义时需要使用interface关键字。   定义接口所在的仍为.java文件,虽然声明时使用的为interface关键字的编译后仍然会产生.class文件。这点可以让我们将接口看做是一种只包含了功能声明的特殊类。    定义格式: public interface 接口名 { 抽象方法1; 抽象方法2; 抽象方法3; }   使用interface代替了原来的class,其他步骤与定义类相同:    接口中的方法均为公共访问的抽象方法    接口中无法定义普通的成员变量   类实现接口   类与接口的关系为实现关系,即类实现接口。实现的动作类似继承,只是关键字不同,实现使用implements。    其他类(实现类)实现接口后,就相当于声明:”我应该具备这个接口中的功能”。实现类仍然需要重写方法以实现具体的功能: class 类 implements 接口 { 重写接口中方法 }   在类实现接口后,该类就会将接口中的抽象方法继承过来

AtomicReference与volatile的区别

穿精又带淫゛_ 提交于 2020-02-27 08:53:29
首先volatile是java中关键字用于修饰变量,AtomicReference是并发包java.util.concurrent.atomic下的类。 首先volatile作用,当一个变量被定义为volatile之后,看做“程度较轻的 synchronized”,具备两个特性: 1.保证此变量对所有线程的可见性(当一条线程修改这个变量值时,新值其他线程立即得知) 2.禁止指令重新排序 注意volatile修饰变量不能保证在并发条件下是线程安全的,因为java里面的运算并非原子操作。 volatile说明 java.util.concurrent.atomic工具包,支持在单个变量上解除锁的线程安全编程。其基本的特性就是在多线程环境下,当有多个线程同时执行这些类的实例包含的方法时,具有排他性,即当某个线程进入方法,执行其中的指令时,不会被其他线程打断,而别的线程就像自旋锁一样,一直等到该方法执行完成,才由JVM从等待队列中选择一个另一个线程进入,这只是一种逻辑上的理解。 AtomicReference说明 Java 理论与实践: 正确使用 Volatile 变量 Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized ”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少

将块内的变量分配给块外的变量

浪尽此生 提交于 2020-02-27 08:14:47
我遇到错误 变量不可分配(缺少__block类型说明符) 在线 aPerson = participant; 。 我如何确保该块可以访问 aPerson 变量并且可以返回 aPerson 变量? Person *aPerson = nil; [participants enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { Person *participant = (Person*)obj; if ([participant.gender isEqualToString:@"M"]) { aPerson = participant; *stop = YES; } }]; return aPerson; #1楼 要在块内分配一个在块外的变量,请始终在该变量之前使用__block说明符: __block Person *aPerson = nil; #2楼 只需使用 __block 前缀在块内声明和分配任何类型的变量即可。 例如: __block Person *aPerson = nil; __block NSString *name = nil; #3楼 只是提醒我我也犯了一个错误, __block 在首先声明变量时,即在块的外部,而不是在内部,必须进行声明。

成员变量是指针的注意点

耗尽温柔 提交于 2020-02-27 07:10:17
若使用成员拷贝,则指针指向同一块区域,不行,目的是指向拷贝一份相同存储空间区域过来 若使用赋值运算符,则需要判断传入的参数不是自己,若是自己则指针指向的那份待拷贝空间没了,即使保留一段时间,但是再次拷贝出空间时候,值会消失,接下来没了拷贝的值 来源: CSDN 作者: Tine Chan 链接: https://blog.csdn.net/chanleoo/article/details/104457850

JavaScript高级程序设计- 变量、作用域和内存问题

我们两清 提交于 2020-02-27 07:07:01
4 变量、作用域和内存问题 理解基本类型和引用类型 理解执行环境 理解垃圾收集 变量的值及其数据类型可以在脚本的生命周期内改变。 4.1基本类型和引用类型 基本类型值指的是简单的数据段,而引用类型值指那些可能由多个值构成的对象。 ES5中 5 种基本数据类型: Undefined、 Null、 Boolean、 Number 和 String。这 5 种基本数据类型是按值访问的,因为可以操作保存在变量中的实际的值。ES6中新增Symbol 引用类型的值是保存在内存中的对象。 JavaScript 不允许直接访问内存中的位置,也就是说不能直接操作对象的内存空间。在操作对象时,实际上是在操作对象的引用而不是实际的对象,ES6中的Map,set,WeakMap,WeakSet 4.1.1 动态属性 定义基本类型值和引用类型值的方式是类似的:创建一个变量并为该变量赋值 引用类型可以 var person = new Object ( ) ; person . name = "threeSt" ; alert ( person . name ) ; //"threeSt" //基本类型不能添加 var name = "three" ; name . age = 26 ; console . log ( name . age ) //undefined 4.1.2 复制变量

bugku-web(变量1)

二次信任 提交于 2020-02-27 06:55:56
记性不好,老忘事于是决定把做的题目记录一下 这是一个代码审计的题目 需要传入有个args参数,通过eval来执行var_dump来打印一些东西。但是它打印的是$$args而不是$args。 对‘$$args'的分析: example: 1 <?php 2 $plan = 'Binary'; //变量plan的值为'Binary'的字符串 3 $Binary = 'handsome'; //再把变量plan的值设为一个变量的变量名,而这个变量的值为'handsome' 4 echo $$plan.'</br>'; //打印$$plan,其实就相当于打印$[$plan]=$[Binary]='handsome' 5 echo $Binary.'</br>'; //打印$Binary,其结果为'handsome'和上一行的打印结果一样 有了这个例子,就可以操作了。传入的是args参数,而传入的参数将会被当作一个变量名并打印它的变量值。比如传入一个x。则有$args=x,而执行var_dump($$args)时相当于执行var_dump($x),而此时程序里没有x这个变量,所以就会返回一个NULL值显示在浏览器上,这变量没有意义。所以传入的参数得是一个有意义的变量,PHP恰好有这类似的东西,如$GLOBALS,$_GET,$POST...,$GLOBALS这个变量存储了所有的变量