变量

JavaScript:学习笔记(7)——VAR、LET、CONST三种变量声明的区别

前提是你 提交于 2020-03-27 22:18:53
JavaScript:学习笔记(7)——VAR、LET、CONST三种变量声明的区别   ES2015(ES6)带来了许多闪亮的新功能,自2017年以来,许多JavaScript开发人员已经熟悉并开始使用这些功能。虽然这种假设可能是正确的,但仍有可能其中一些功能对某些人来说仍然是一个谜。   ES6带来的一个新特性是 新增了通过使用let、const来声明变量 。在本文中,我们将讨论var,let和const的范围,使用和提升。在您阅读时,请注意它们之间的差异,我会指出。 VAR VAR的范围   范围本质是意味着这些变量可供使用的位置。 var声明的范围是全局作用于或者本地函数作用域 。当一个var变量声明在函数外面时它的作用域是全局的,这意味着在整个窗口中可以使用在函数块外部使用var声明的任何变量。 var变量在函数内声明时是函数作用域 。这意味着它可用,只能在该函数中访问。   我们举一个例子: <script> var greeter = "Hello"; function hello() { var hi = "Hi"; } </script>   在这里,greeter是全局范围的,因为它存在于函数外部,而hello是函数作用域。所以我们不能在函数外部访问变量hi。所以,如果我们这样做:    var变量可以重新声明和更新   这个是比较好理解的    var变量提升

判断栈和堆的生长方向

旧时模样 提交于 2020-03-27 21:22:15
如何判断栈的增长方向? 对于一个用惯了i386系列机器的人来说,这似乎是一个无聊的问题,因为栈就是从高地址向低地址增长。不过,显然这不是这个问题的目的,既然把这个问题拿出来,问的就不只是i386系列的机器,跨硬件平台是这个问题的首先要考虑到的因素。 在一个物质极大丰富的年代,除非无路可退,否则我们坚决不会使用汇编去解决问题,而对于这种有系统编程味道的问题,C是一个不错的选择。那接下来的问题就是如何用C去解决这个问题。 C在哪里会用到栈呢?稍微了解一点C的人都会立刻给出答案,没错,函数。我们知道,局部变量都存在于栈之中。似乎这个问题立刻就得到了解答,用一个函数声明两个局部变量,然后比较两个变量的地址,这样就可以得到答案。 等一下,怎么比较两个变量的地址呢? 先声明的先入栈, 所以,它的第一个变量的地址如果是高的,那就是从上向下增长。“先声明的先入栈”?这个结论从何而来?一般编译器都会这么处理。要是不 一般呢?这种看似正确的方法实际上是依赖于编译器的,所以,可移植性受到了挑战。 那就函数加个参数,比较参数和局部变量的位置,参数肯定先入栈。那为什么不能局部变量先入栈?第一反应是怎么可能,但仔细想来又没有什么不可以。所以,这种方法也依赖于编译器的实现。 那到底什么才不依赖于编译器呢? 不妨回想一下,函数如何调用。执行一个函数时,这个函数的相关信息都会出现栈之中,比如参数、返回地址和局部变量

JVM史上最最最完整深入解析(12000字噢)

空扰寡人 提交于 2020-03-27 18:12:07
3 月,跳不动了?>>> 点点这个链接免费获取: 【推荐】2020年最新Java电子书集合.pdf(吐血整理) >>> 工作之余,总结一下JVM相关知识。 Java运行时数据区: Java虚拟机在执行Java程序的过程中会将其管理的内存划分为若干个不同的数据区域,这些区域有各自的用途、创建和销毁的时间,有些区域随虚拟机进程的启动而存在,有些区域则是依赖用户线程的启动和结束来建立和销毁。Java虚拟机所管理的内存包括以下几个运行时数据区域,如图: 1、程序计数器:指向当前线程正在执行的字节码指令。线程私有的。 2、虚拟机栈:虚拟机栈是Java执行方法的内存模型。每个方法被执行的时候,都会创建一个栈帧,把栈帧压人栈,当方法正常返回或者抛出未捕获的异常时,栈帧就会出栈。(1)栈帧:栈帧存储方法的相关信息,包含局部变量数表、返回值、操作数栈、动态链接a、局部变量表:包含了方法执行过程中的所有变量。局部变量数组所需要的空间在编译期间完成分配,在方法运行期间不会改变局部变量数组的大小。b、返回值:如果有返回值的话,压入调用者栈帧中的操作数栈中,并且把PC的值指向 方法调用指令 后面的一条指令地址。c、操作数栈:操作变量的内存模型。操作数栈的最大深度在编译的时候已经确定(写入方法区code属性的max_stacks项中)。操作数栈的的元素可以是任意Java类型,包括long和double

PHP 代码简洁之道 ( PHP Clean Code)(第一部分)

ぐ巨炮叔叔 提交于 2020-03-27 16:16:39
介绍 Robert C.Martin's 的 软件工程师准则 Clean Code 同样适用于 PHP。它并不是一个编码风格指南,它指导我们用 PHP 写出具有可读性,可复用性且可分解的代码。 并非所有的准则都必须严格遵守,甚至一些已经成为普遍的约定。这仅仅作为指导方针,其中许多都是 Clean Code 作者们多年来的经验。 尽管许多开发者依旧使用 PHP 5 版本,但是这篇文章中绝大多数例子都是只能在 PHP 7.1 + 版本下运行。 变量 使用有意义的且可读的变量名 不友好的: $ymdstr = $moment->format('y-m-d');    友好的: $currentDate = $moment->format('y-m-d');    对同类型的变量使用相同的词汇 不友好的: getUserInfo(); getUserData(); getUserRecord(); getUserProfile();    友好的: getUser();    使用可搜索的名称(第一部分) 我们阅读的代码超过我们写的代码。所以我们写出的代码需要具备可读性、可搜索性,这一点非常重要。要我们去理解程序中没有名字的变量是非常头疼的。让你的变量可搜索吧! 不具备可读性的代码: // 见鬼的 448 是什么意思? $result = $serializer->serialize(

php整理

自闭症网瘾萝莉.ら 提交于 2020-03-27 14:58:16
1. include 和 require 的区别 加载失败的处理方式不同。引入不存在的文件时, include 会产生警告且脚本还会继续执行, require 则会导致一个致命性错误且脚本停止执行。 文件引用方式不同。 include() 执行时需要引用的文件每次都进行执行,并且可以有返回值, require() 只是单纯的文件替换,没有返回值 require 一般放在 PHP 文件的最前面,程序在执行前会先倒入所需要引用的文件; include 一般放在程序的控制流程中,当程序执行时碰到才会引用,简化程序的执行流程。 2.常用关键字 final :用于声明方法和类,修饰类时,该类不能被继承,修饰方法时,该方法不能被覆盖。 static :主要用来修饰成员变量以及成员方法,分别为静态变量和静态方法,通过类直接调用。 global :主要使用于函数内声明变量为全局变量,在函数内部可以使用外部变量。 global 声明的变量只是全局变量的一个同名引用, $GLOBALS 是全局变量本身。 this 、 self 、 parent : this 是指向当前对象的指针, self 是指向当前类的指针, parent 是指向当前父类的指针。 Trait :是为 PHP 的单继承语言而准备的一种代码复用机制。Trait 为了减少单继承语言的限制

Python3 面向对象编程OOP

生来就可爱ヽ(ⅴ<●) 提交于 2020-03-27 14:52:24
OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。 特性:封装,继承,多态 1.类   在Python中,所有数据类型都可以视为对象,当然也可以自定义对象。自定义的对象数据类型就是面向对象中的类(Class)的概念。 1) 创建类: (实例模板)   名词--属性   动词--方法 Eg: class Student(object): def __init__(self, name, score): self.name = name self.score = score def print_score(self): print('%s: %s' % (self.name, self.score)) -------------------------------- bart = Student('Bart Simpson', 59) lisa = Student('Lisa Simpson', 87) bart.print_score() lisa.print_score()   注意到 __init__ 方法的第一个参数永远是 self ,表示创建的实例本身,因此,在 __init__ 方法内部,就可以把各种属性绑定到 self ,因为 self 就指向创建的实例本身。    2)实例可以自由绑定属性/方法(类也可以) #为实例绑定属性/方法,只对当前实例有效>>

php基础

╄→гoц情女王★ 提交于 2020-03-27 12:37:59
PHP 简介 最初用于维护个人主页,简写为: Personal HomePage 。 最后改为: Hypertext Preprocessor (超文本预处理器),于1994年诞生。 优势 性能好,开发效率高 跨平台(可以在不同的操作系统上运: windows / linux / unix ) 上手快,编辑简单,实用性强 面向对象[ PHP 4 开始,目前完全支持面向对象] 开放的源代码,所有的 PHP 源代码都可以得到 成本低 注: PHP 灵活,对程序员的约束太少, PHP 默认是解释运行机制,所以很多问题在运行阶段才会发现。 B/S 结构和 C/S 结构 B/S : Browser-Server ,浏览器-服务器,通过浏览器访问,都可以看作 B/S C/S : Client-Server ,客户端-服务器,通过客户端访问,比如 QQ ,微信 PHP 基础语法 开始标记和结束标记 告诉 PHP 开始和停止解析二者之间的代码,这使得 PHP 可以被嵌入到各种不同的文档中去。 如果是文件是纯 PHP 代码,最好在文件末尾删除 PHP 结束标记。 指令分隔符 //指令分隔符:php和其他编程语言一样,在每个语句后用分号';'结束指令,一段PHP代码中的结束标记隐含一个分号,所以在一个PHP代码段中的最后一行可以不用分号结束。 echo 'hello, world'."\n"; 注释

php数据类型

荒凉一梦 提交于 2020-03-27 12:24:29
PHP 数据类型 PHP 支持八种原始的 数据类型 : 布尔型 /* * boolean:TRUE FALSE * 以下值被认为是FALSE: * 布尔值FALSE本身 * 整型值0(零) * 浮点型0.0(零) * 空字符串,以及字符串"0" * 不包含任何元素的数组 * 特殊类型NULL(包括尚未赋值的变量) * ---所有其他值都被认为是TRUE */ $foo = true; echo "foo的值是:$foo"."\n"; if ($foo){ echo "foo是真值"."\n"; } else{ echo "foo是假值"."\n"; } 整型 /* * Integer 整型,可以十进制、十六进制(0x)、八进制(0)、二进制(0b) * php不支持无符号整数,即php中的整数都是有符号的,最大的整数为PHP_INT_MAX * 注:如果给定一个数超出了integer的范围,将会被解释成float,同样如果执行的运算结果超出了integer范围,也会返回float */ //PHP中没有整除运算符,1/2会产生float 0.5。 echo 1/2; echo "\n"; echo (integer)(1/2); //integer强制转换为整型(去尾法) echo "\n"; echo round(1/2); //round()四舍五入 echo "\n"; /

Lombok常用注解

非 Y 不嫁゛ 提交于 2020-03-27 11:26:23
Lombok常用注解 @Getter/@Setter: 作用类上,生成所有成员变量的getter/setter方法;作用于成员变量上,生成该成员变量的getter/setter方法。可以设定访问权限及是否懒加载等。 @ToString:作用于类,覆盖默认的toString()方法,可以通过of属性限定显示某些字段,通过exclude属性排除某些字段。 @EqualsAndHashCode:作用于类,覆盖默认的equals和hashCode @NonNull:主要作用于成员变量和参数中,标识不能为空,否则抛出空指针异常。 @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor:作用于类上,用于生成构造函数。有staticName、access等属性。 staticName属性一旦设定,将采用静态方法的方式生成实例,access属性可以限定访问权限。 @NoArgsConstructor:生成无参构造器; @RequiredArgsConstructor:生成包含final和@NonNull注解的成员变量的构造器; @AllArgsConstructor:生成全参构造器 @Data:作用于类上,是以下注解的集合:@ToString @EqualsAndHashCode @Getter @Setter

Nuxt中使用自定义环境变量

徘徊边缘 提交于 2020-03-27 11:17:53
3 月,跳不动了?>>> 1、安装cross-env npm i cross-env -D 2、在package.json的scripts中增加增加环境变量 例如 "dev": "cross-env NUXT_ENV_COOL_WORD=freezing nuxt", 接下来可以在项目中使用process.env.NUXT_ENV_COOL_WORD获取变量值 来源: oschina 链接: https://my.oschina.net/u/585210/blog/3212308