同步和异步、引用、变量声明、全局变量

同步和异步

如果计算机足够快,任何资源的访问速度都像Cache一样,没有异步的必要。

编程语言的同步和异步

  • 越早期的编程语言,支持语言级别的异步越欠缺。

  • JS提供某些操作的同步和异步函数,例如文件读取,fs.readFile和fs.readFileSync.

引用

鲁迅的话总是被别人引用,引用总能得到更多安全感。

引用的本质

  • 尽管各种编程语言用各种方式希望把它和指针撇开,事实上,所有编程语言提到变量"引用"基本都是来自变量的地址。

  • C++的引用本质就是指针。

  • PHP 4引入引用赋值,形如$v1 = "hello"; $v2 =& $v1; 此时v1和v2指向同一个变量,一个变大家都变。

变量声明

声明有的时候很有作用,大国对抗所谓的"声明"其实就是赤裸裸的"威胁",但声明显得更文明。

不同语言的声明

  • 越古早的语言,越需要声明,越像脚本的语言,越对声明不严格。

  • Perl需要显式声明变量。

  • PHP不需要显式声明变量,声明可以和赋值同时进行。

  • Python是Shell的改进版,不需要特别声明,想用就直接用。

  • C/ObjC/C++/Java/C#/Rust/Go/Swift/仓颉/VB/Fortran 都需要先声明(或者被绑定),才能使用。

  • JS比较特殊,大部分情况下都需要先用let或var声明变量再使用,但可以在不声明变量的情况下直接赋值,这会导致该变量被隐式地创建为全局变量,大概率不是预期。
    • 比如在没声明a的前提下给a赋值,创建了一个全局变量:a = 1

变量声明的默认值?

  • C/ObjC/C++变量声明但未初始化,默认值是不确定的。

  • Java基本变量只声明不初始化,就使用,编译器会报错。注意,如果是类成员变量,对象初始化后成员没有显式初始化,默认值是0.

变量声明缺省类型?

对于支持缺省类型的编程语言,初始化可以用缺省类型,但如果是声明,缺省类型就不能缺少。

  • 仓颉变量声明,必须指定类型,因为编译器不知道缺省类型。

全局变量

每个省出生的人口最终会算到全国的出生人口。

不同语言的全局变量

  • C语言在函数之外定义的变量是全局变量,C++除此之外,在类里面定义的static变量也是类全局变量。

  • Java/C#的类static变量和C++比较像。

  • PHP全局变量一样是定义在最外级别,用GLOBAL关键字指示使用的是全局变量。

全局变量、局部变量覆盖

  • C/C++默认局部变量同名覆盖全局变量,C++有特例,是用域作用符::指定访问全局变量。

  • PHP必须明确用GLOBAL指示操作全局变量,否则同名变量会当成局部变量处理。另,PHP提供了GLOCALS数组指示操作全局变量。


若文章对您有帮助,欢迎关注。助您在编程路上越走越好!

微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是程序员小迷(致力于C、C++、Java、Kotlin、Android、iOS、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/452240.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

点亮一个LED(51)

目录 1.LED介绍 2.硬件电路 3.程序设计 3.1.点亮一颗LED 3.2.LED闪烁 3.3.LED流水灯实现 1.LED介绍 发光二极管也具有二极管普遍的特性单向导电性,有阳极和阴极之分 ,上图左侧式插件式LED ,长的引脚是阳极;左侧是贴片式的带…

基于FPGA的以太网设计(六)

前面分别实现了ARP协议和ICMP协议,但这俩协议都不能进行数据的传输,如果想要用以太网传输数据的话还需要实现UDP协议或者TCP协议,关于二者的差别主要包括以下几点: 1.连接性 TCP是面向连接的协议,它在传输数据之前需…

UICollectionView 的UICollectionReusableView复用 IOS18报错问题记录

- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath 方法复用报错 报错详情: Terminating app due to uncaught exception NSInternal…

Star Tower:智能合约的安全基石与未来引领者

在区块链技术的快速发展中,智能合约作为新兴的应用形式,正逐渐成为区块链领域的重要组成部分。然而,智能合约的可靠性问题一直是用户最为关心的焦点之一。为此,Star Tower以其强大的技术实力和全面的安全保障措施,为智…

win10下带参执行.exe的几种方法

0 工具准备 vscode&#xff0c;编辑C代码 Code Runner插件&#xff0c;用于生成exe1 生成支持带参处理的.exe C源码如下&#xff1a; #include "stdio.h" #include <stdlib.h>int main(int argc, char *argv[]) {int i;printf("argc : %d\r\n", a…

首创VMware vCenter 8.0U3b 无DNS部署秘籍

哈喽大家好,欢迎来到虚拟化时代君(XNHCYL)。 “ 大家好,我是虚拟化时代君,一位潜心于互联网的技术宅男。这里每天为你分享各种你感兴趣的技术、教程、软件、资源、福利…(每天更新不间断,福利不见不散) 第一章、小叙 今天介绍下VMware vCenter 8.0u3b 无DNS部署教…

manjaro kde 磁盘扩容

vmware wprlstatopm 搭建的manjaro kde &#xff0c;初始磁盘太小&#xff08;40G&#xff09;&#xff0c;现在想扩容磁盘空间 &#xff0c;vmware wprlstatopm已从40G调整到140g&#xff0c;manjaro kde 系统却没有变化&#xff0c;请指点manjaro kde 如何磁盘扩容 要在 Man…

【以雅特力AT32为例】CAN过滤器及其原理与邮箱配置

个人认为过滤器的本质就是对ID值&#xff08;局部or全部&#xff09;的比较。 协议层雅特力跟标准CAN略有不同&#xff0c;详见&#xff1a;【雅特力AT32】 MCU CAN入门指南&#xff08;超详细&#xff09; 协议层了解差不多&#xff0c;直接来应用编程实战就好了&#xff0c…

从一个事故中理解 Redis(几乎)所有知识点

作者&#xff1a;看破 一、简单回顾 事故回溯总结一句话&#xff1a; &#xff08;1&#xff09;因为大 KEY 调用量&#xff0c;随着白天自然流量趋势增长而增长&#xff0c;最终在业务高峰最高点期占满带宽使用 100%。 &#xfeff; &#xfeff; &#xff08;2&#xff…

mysql5.7版本用户管理(user表列信息介绍,本质,管理操作),数据库的权限管理(权限列表,权限操作)

目录 用户管理 介绍 user表 介绍 列信息 Host User *_priv authentication_string 用户管理的本质 操作 创建用户 删除用户 修改用户信息 修改密码 自己修改 root用户修改指定用户的密码 数据库的权限 权限列表 给用户授权 查看权限 回收权限 刷新权限 …

GDAL+C#实现矢量多边形转栅格

1. 开发环境测试 参考C#配置GDAL环境&#xff0c;确保GDAL能使用&#xff0c;步骤简述如下&#xff1a; 创建.NET Framework 4.7.2的控制台应用 注意&#xff1a; 项目路径中不要有中文&#xff0c;否则可能报错&#xff1a;can not find proj.db 在NuGet中安装GDAL 3.9.1和G…

【ARM】ARM中断系统详解——以Cortex-A7为例

一、Cortext-A7中断系统简介 Cortex-A7 也有中断向量表&#xff0c;内核有 8 个异常中断&#xff0c;中断向量表也是在代码的最前面。 看起来A7的中断向量表比STM32F103少很多&#xff0c;这是因为STM32F103使用的Cortex-M系列芯片&#xff0c;中断向量表列举出了一款芯片所有…

React Strict DOM:React Native 通用应用程序的未来

Meta宣布发布了 react-strict-dom。从根本上讲&#xff0c;这将改变我们使用 React Native&#xff08;以及在网页上使用 React&#xff09;的方式。它提供了一套统一的 UI 原语&#xff0c;带有样式&#xff0c;可以在网页和移动设备上通用使用&#xff01;现在&#xff0c;“…

package.json 里的 dependencies和devDependencies区别

dependencies&#xff08;依赖的意思&#xff09;&#xff1a; 通过 --save 安装&#xff0c;是需要发布到生产环境的。 比如项目中使用react&#xff0c;那么没有这个包的依赖就会报错&#xff0c;因此把依赖写入dependencies npm install <package-name>// 缩写 np…

【含文档】基于Springboot+Vue的点餐系统(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…

基于直播美颜SDK的实时美颜平台开发指南

随着直播平台的快速发展&#xff0c;用户对视频质量的要求越来越高&#xff0c;尤其是对于美颜效果的需求。为满足这一市场需求&#xff0c;基于直播美颜SDK的实时美颜平台应运而生。本文将探讨如何开发这样一个平台&#xff0c;助力开发者在激烈的竞争中脱颖而出。 一、理解美…

Dorado7 全局缓存当前登录人信息 localStorage

登录成功时赋值 com.gs.mcf.view/index.js // like12 add,20240906,全局缓存当前登录人信息var currentName view.get(#userNameLb).get(tip);if(window.localStorage){localStorage.setItem("currentName", currentName);} 使用 // like12 add,20240906,全局缓存…

软考(网工)——网络安全

文章目录 &#x1f550;网络安全基础1️⃣网络安全威胁类型2️⃣网络攻击类型 &#x1f551;现代加密技术1️⃣私钥密码/对称密码体制2️⃣对称加密算法总结3️⃣公钥密码/非对称密码4️⃣混合密码5️⃣国产加密算法 - SM 系列6️⃣认证7️⃣基于公钥的认证 &#x1f552;Hash …

Java 入门基础篇15 - java构造方法以及认识新的关键字

一 今日目标 构造方法static关键字代码块math类package关键字import关键字 二 构造方法概述 2.1 构造方法描述 构造方法是一个特殊方法&#xff0c;作用是创建对象&#xff0c;对对象进行初始化。 ​ 如&#xff1a; 对对象中的成员进行初始化值 2.1 构造方法的特征 1、方…

集群与分布式

Cluster(集群)概述 当单独一台主机无法承载现有的用户请求量&#xff1b;或者一台主机因为单一故障导致业务中断的时候&#xff0c;就可以增加服务主机数&#xff0c;这些主机在一起提供服务&#xff0c;就叫集群&#xff0c;而用户所看到的依然是单个的主机&#xff0c;用户并…