12 Php学习:魔术常量

news2024/11/19 21:14:55

PHP魔术常量

PHP 向它运行的任何脚本提供了大量的预定义常量。
在这里插入图片描述

不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。

有八个魔术常量它们的值随着它们在代码中的位置改变而改变。

​​__LINE__​:当前行号,返回这个常量所在的行号。
​​__FILE__​:当前文件的完整路径和文件名。
​​__DIR__​:当前文件所在的目录。
​​__FUNCTION__​:当前函数的名称。
​​__CLASS__​:当前类的名称。
​​__TRAIT__​:当前 trait 的名称。
​​__METHOD__​:当前方法的名称(包括类名)。
​​__NAMESPACE__​:当前命名空间的名称。

详细介绍和举例

当然,让我们逐个详细解释和举例这八个 PHP 魔术常量:

  1. __LINE____LINE__ 常量返回当前行号,即它所在的代码行在源文件中的行号。这对于调试和记录错误非常有用。

    示例:

    echo "当前行号:" . __LINE__;
    

    输出:

    当前行号:3
    
  2. __FILE____FILE__ 常量返回当前文件的完整路径和文件名。它可用于获取正在执行的脚本的文件名。

    示例:

    echo "当前文件:" . __FILE__;
    

    输出:

    当前文件:/path/to/your/file.php
    
  3. __DIR____DIR__ 常量返回当前文件所在的目录的完整路径。

    示例:

    echo "当前目录:" . __DIR__;
    

    输出:

    当前目录:/path/to/your/directory
    
  4. __FUNCTION____FUNCTION__ 常量返回当前函数的名称。这对于记录日志和调试时非常有用。

    示例:

    function myFunction() {
        echo "当前函数:" . __FUNCTION__;
    }
    myFunction();
    

    输出:

    当前函数:myFunction
    
  5. __CLASS____CLASS__ 常量返回当前类的名称。如果在类的方法中调用,它将返回该方法所属的类的名称。

    示例:

    class MyClass {
        public function showClassName() {
            echo "当前类:" . __CLASS__;
        }
    }
    $obj = new MyClass();
    $obj->showClassName();
    

    输出:

    当前类:MyClass
    
  6. __TRAIT____TRAIT__ 常量返回当前 trait 的名称。如果在 trait 方法中调用,它将返回该方法所属的 trait 的名称。

    示例:

    trait MyTrait {
        public function showTraitName() {
            echo "当前 trait:" . __TRAIT__;
        }
    }
    class MyClass {
        use MyTrait;
    }
    $obj = new MyClass();
    $obj->showTraitName();
    

    输出:

    当前 trait:MyTrait
    
  7. __METHOD____METHOD__ 常量返回当前方法(包括类名)的名称。在类的方法中调用时,它将返回类名和方法名的组合。

    示例:

    class MyClass {
        public function showMethodName() {
            echo "当前方法:" . __METHOD__;
        }
    }
    $obj = new MyClass();
    $obj->showMethodName();
    

    输出:

    当前方法:MyClass::showMethodName
    
  8. __NAMESPACE____NAMESPACE__ 常量返回当前命名空间的名称。

    示例:

    namespace MyNamespace;
    echo "当前命名空间:" . __NAMESPACE__;
    

    输出:

    当前命名空间:MyNamespace
    

这些魔术常量在不同的上下文中提供了关于当前执行环境的重要信息,可用于调试、日志记录和动态代码生成等情景。

PHP 命名空间(namespace)

PHP 命名空间(namespace)是在 PHP 5.3 中加入的,目的是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误。

PHP 命名空间可以解决以下两类问题:

  • 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
  • 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。

在这里插入图片描述

定义命名空间

在 PHP 中,命名空间被用来解决代码命名冲突的问题,它能够将类、函数、常量等封装在命名空间中,防止不同代码库中的同名标识符之间发生冲突。让我详细解释如何定义命名空间以及提供一个示例。

定义命名空间的基本语法:

在 PHP 中,我们使用 namespace 关键字来定义命名空间。命名空间应该出现在所有非 PHP 代码之前,包括 declareuserequireinclude 语句。下面是定义命名空间的基本语法:

namespace MyNamespace;

// 这里是命名空间内的代码

在这个语法中:

  • MyNamespace 是命名空间的名称,您可以根据需要自定义命名空间的名称。

示例:

让我们看一个简单的示例来演示如何定义命名空间并使用命名空间内的类。

// 文件:MyClass.php
namespace MyNamespace;

class MyClass {
    public function sayHello() {
        echo "Hello from MyClass!";
    }
}

// 文件:index.php
require "MyClass.php"; // 引入定义了命名空间的文件

$obj = new MyNamespace\MyClass(); // 使用完整的命名空间路径实例化类
$obj->sayHello();

在这个例子中,我们通过 namespace MyNamespace; 定义了命名空间 MyNamespace,然后在另一个文件中通过 require 引入了定义了命名空间的文件,并实例化了命名空间内的类。

通过使用命名空间,我们可以有效地组织和管理 PHP 代码,避免了命名冲突,并提高了代码的可维护性和可重用性。

子命名空间

子命名空间是指在一个已经存在的父命名空间下创建的额外命名空间。子命名空间的作用类似于文件系统中的文件夹结构,可以更好地组织和管理代码。让我详细解释一下,并给出一个示例。

在 PHP 中,可以使用 namespace 关键字定义子命名空间。子命名空间的定义方式与父命名空间类似,只需在父命名空间后面加上反斜杠 \,然后跟上子命名空间的名称。下面是定义子命名空间的基本语法:

namespace ParentNamespace\SubNamespace;

// 这里是子命名空间内的代码

在这个语法中:

  • ParentNamespace 是父命名空间的名称。
  • SubNamespace 是子命名空间的名称。

示例:

让我们通过一个示例来演示如何定义和使用子命名空间。

假设我们有一个父命名空间 MyNamespace,现在我们要在这个命名空间下创建一个子命名空间 SubNamespace,并在子命名空间中定义一个类 SubClass

// 文件:MyNamespace/SubNamespace/SubClass.php
namespace MyNamespace\SubNamespace;

class SubClass {
    public function sayHello() {
        echo "Hello from SubClass!";
    }
}

现在,在另一个文件中我们可以使用这个子命名空间中的类:

// 文件:index.php
require "MyNamespace/SubNamespace/SubClass.php"; // 引入定义了子命名空间的文件

$obj = new MyNamespace\SubNamespace\SubClass(); // 使用完整的命名空间路径实例化子命名空间中的类
$obj->sayHello();

在这个示例中,我们成功地定义了子命名空间 SubNamespace,并在其中定义了一个类 SubClass。然后在另一个文件中通过引入子命名空间的文件,并使用完整的命名空间路径实例化了 SubClass 类。

子命名空间的使用可以更好地组织和管理代码,使代码结构更加清晰易懂。

使用命名空间

使用命名空间可以帮助您组织和管理 PHP 代码,避免命名冲突,并提高代码的可维护性和可重用性。下面是一些关于如何使用命名空间的基本方法:

  1. 声明命名空间

在您的 PHP 文件的最开始位置使用 namespace 关键字来声明命名空间。例如:

namespace MyNamespace;

class MyClass {
    // 类的定义
}

function myFunction() {
    // 函数的定义
}

在这个例子中,我们声明了命名空间 MyNamespace 并定义了一个类和一个函数。

  1. 引入命名空间

要在另一个文件中使用命名空间中的类或函数,可以使用 use 关键字将命名空间引入当前的作用域。例如:

use MyNamespace\MyClass;
use function MyNamespace\myFunction;

$obj = new MyClass(); // 实例化命名空间中的类
myFunction(); // 调用命名空间中的函数
  1. 完整的命名空间路径

如果不使用 use 引入命名空间,还可以通过完整的命名空间路径来访问命名空间中的类或函数。例如:

$obj = new MyNamespace\MyClass(); // 使用完整的命名空间路径实例化类
MyNamespace\myFunction(); // 使用完整的命名空间路径调用函数
  1. 命名空间的使用

如果需要在父命名空间下创建子命名空间,可以按照前面提到的方法进行定义和使用。

示例:

// 定义命名空间和类
namespace MyNamespace;

class MyClass {
    public function sayHello() {
        echo "Hello from MyNamespace!";
    }
}

// 在另一个文件中使用命名空间中的类
require "MyClass.php"; // 引入定义了命名空间的文件

use MyNamespace\MyClass;

$obj = new MyClass(); // 实例化命名空间中的类
$obj->sayHello(); // 调用类中的方法

在这个示例中,我们定义了一个命名空间 MyNamespace,在另一个文件中使用了 use 关键字引入了命名空间中的类,并成功地实例化了这个类并调用了其中的方法。

命名空间和动态语言特征

PHP 命名空间的实现受到其语言自身的动态特征的影响。因此,如果要将下面的代码转换到命名空间中,动态访问元素。

example1.php 文件代码:

<?php
class classname
{
    function __construct()
    {
        echo __METHOD__,"\n";
    }
}
function funcname()
{
    echo __FUNCTION__,"\n";
}
const constname = "global";

$a = 'classname';
$obj = new $a; // prints classname::__construct
$b = 'funcname';
$b(); // prints funcname
echo constant('constname'), "\n"; // prints global
?>

必须使用完全限定名称(包括命名空间前缀的类名称)。注意因为在动态的类名称、函数名称或常量名称中,限定名称和完全限定名称没有区别,因此其前导的反斜杠是不必要的。

动态访问命名空间的元素

<?php
namespace namespacename;
class classname
{
    function __construct()
    {
        echo __METHOD__,"\n";
    }
}
function funcname()
{
    echo __FUNCTION__,"\n";
}
const constname = "namespaced";

include 'example1.php';

$a = 'classname';
$obj = new $a; // 输出 classname::__construct
$b = 'funcname';
$b(); // 输出函数名
echo constant('constname'), "\n"; // 输出 global

/* 如果使用双引号,使用方法为 "\\namespacename\\classname"*/
$a = '\namespacename\classname';
$obj = new $a; // 输出 namespacename\classname::__construct
$a = 'namespacename\classname';
$obj = new $a; // 输出 namespacename\classname::__construct
$b = 'namespacename\funcname';
$b(); // 输出 namespacename\funcname
$b = '\namespacename\funcname';
$b(); // 输出 namespacename\funcname
echo constant('\namespacename\constname'), "\n"; // 输出 namespaced
echo constant('namespacename\constname'), "\n"; // 输出 namespaced
?>

namespace关键字和__NAMESPACE__常量

namespace 关键字和 __NAMESPACE__ 常量是 PHP 中用于处理命名空间的重要工具。下面我将详细解释它们,并通过示例来说明它们的用法。

  1. namespace 关键字:

namespace 关键字用于定义当前文件中类、函数或常量所属的命名空间。在同一个文件中,namespace 关键字必须在所有代码之前声明。

语法:

<?php
namespace MyNamespace;

class MyClass {
    // 类实现
}

function myFunction() {
    // 函数实现
}
?>
  1. __NAMESPACE__ 常量:

__NAMESPACE__ 是一个魔术常量,用于返回当前命名空间的名称。它在任何地方都可使用,即使在没有明确指定命名空间的地方也可以使用。

示例:

<?php
// 文件: MyNamespace/MyClass.php
namespace MyNamespace;

class MyClass {
    public function getNamespace() {
        return __NAMESPACE__;
    }
}
?>

<?php
// 文件: index.php
require "MyNamespace/MyClass.php";

$obj = new MyNamespace\MyClass();
echo $obj->getNamespace(); // 输出:MyNamespace
?>

在这个示例中,我们定义了一个命名空间 MyNamespace,并在类中使用了 __NAMESPACE__ 常量来获取当前命名空间的名称。然后在另一个文件中实例化该类,并输出当前命名空间的名称。

通过使用 namespace 关键字和 __NAMESPACE__ 常量,可以更好地组织和管理代码,避免命名冲突,并了解当前代码所在的命名空间。

使用命名空间:别名/导入

PHP中使用命名空间的别名和导入功能可以帮助简化代码,提高可读性。下面我将解释如何使用命名空间的别名(Aliases)和导入(Imports)功能,并提供示例说明:

  1. 使用别名(Aliases):

在 PHP 中,您可以为一个较长或复杂的命名空间路径创建一个短的别名,以便在代码中更方便地引用这个命名空间。这里简单介绍一下如何使用别名:

语法:

use Namespace\Long\ClassName as Alias;
示例:
use MyNamespace\SubNamespace\AnotherClass as AnotherAlias;

$object = new AnotherAlias(); // 创建一个命名空间的别名对象实例
  1. 使用导入(Imports):

通过导入命名空间,您可以在当前作用域中引入多个类、函数或常量,而无需重复使用完整的命名空间路径。下面简单介绍如何使用导入:

语法:
use Namespace\ClassA;
use Namespace\ClassB;

示例:

use MyNamespace\SubNamespace\SomeClass;
use MyApp\Helpers\HelperFunctions;

$obj1 = new SomeClass(); // 直接使用导入的类
HelperFunctions::someFunction(); // 直接访问导入的函数

完整示例:

<?php
// 定义命名空间及类
namespace MyNamespace\Utilities;

class Logger {
    public function log($message) {
        echo "Logging: $message";
    }
}

// 在另一个文件中导入和使用
require "Logger.php";

use MyNamespace\Utilities\Logger as MyLogger; // 为 Logger 类创建别名 MyLogger

$log = new MyLogger();
$log->log("An important message"); // 使用别名创建的实例调用方法
?>

在这个示例中,我们定义了一个命名空间 MyNamespace\Utilities,在另一个文件中通过导入并为 Logger 类创建了别名 MyLogger,然后实例化该类并调用其中的方法。

使用命名空间:后备全局函数/常量

在PHP中,可以通过命名空间的后备全局函数和常量来实现在命名空间内找不到函数或常量时,自动回退到全局命名空间中查找。这样可以确保即使在特定命名空间内没有定义某个函数或常量,程序仍能正常运行。

后备全局函数:

使用 namespace 关键字前添加反斜杠 \ 可以在命名空间中找不到函数时,自动回退到全局空间寻找该函数。

示例:
namespace MyNamespace;

function myFunction() {
    // 函数实现
}

\myFunction(); // 如果在当前命名空间找不到 myFunction,则自动回退到全局空间查找

后备全局常量:

类似地,通过在命名空间中找不到常量时,在常量名前加上反斜杠 \ 可以在全局空间中查找该常量。

示例:
namespace MyNamespace;

define("MY_CONSTANT", "Some value");

echo \MY_CONSTANT; // 如果在当前命名空间找不到 MY_CONSTANT 常量,则自动回退到全局空间查找

这样,无论是函数还是常量,当在特定命名空间内找不到时,PHP会自动在全局空间中查找。这种机制确保了代码的灵活性并简化了命名空间的使用。

全局空间

如果没有定义任何命名空间,所有的类与函数的定义都是在全局空间,与 PHP 引入命名空间概念前一样。在名称前加上前缀 \ 表示该名称是全局空间中的名称,即使该名称位于其它的命名空间中时也是如此。

使用全局空间说明

<?php
namespace A\B\C;

/* 这个函数是 A\B\C\fopen */
function fopen() { 
     /* ... */
     $f = \fopen(...); // 调用全局的fopen函数
     return $f;
} 
?>

命名空间的顺序

自从有了命名空间之后,最容易出错的该是使用类的时候,这个类的寻找路径是什么样的了。

<?php
namespace A;
use B\D, C\E as F;

// 函数调用

foo();      // 首先尝试调用定义在命名空间"A"中的函数foo()
            // 再尝试调用全局函数 "foo"

\foo();     // 调用全局空间函数 "foo" 

my\foo();   // 调用定义在命名空间"A\my"中函数 "foo" 

F();        // 首先尝试调用定义在命名空间"A"中的函数 "F" 
            // 再尝试调用全局函数 "F"

// 类引用

new B();    // 创建命名空间 "A" 中定义的类 "B" 的一个对象
            // 如果未找到,则尝试自动装载类 "A\B"

new D();    // 使用导入规则,创建命名空间 "B" 中定义的类 "D" 的一个对象
            // 如果未找到,则尝试自动装载类 "B\D"

new F();    // 使用导入规则,创建命名空间 "C" 中定义的类 "E" 的一个对象
            // 如果未找到,则尝试自动装载类 "C\E"

new \B();   // 创建定义在全局空间中的类 "B" 的一个对象
            // 如果未发现,则尝试自动装载类 "B"

new \D();   // 创建定义在全局空间中的类 "D" 的一个对象
            // 如果未发现,则尝试自动装载类 "D"

new \F();   // 创建定义在全局空间中的类 "F" 的一个对象
            // 如果未发现,则尝试自动装载类 "F"

// 调用另一个命名空间中的静态方法或命名空间函数

B\foo();    // 调用命名空间 "A\B" 中函数 "foo"

B::foo();   // 调用命名空间 "A" 中定义的类 "B""foo" 方法
            // 如果未找到类 "A\B" ,则尝试自动装载类 "A\B"

D::foo();   // 使用导入规则,调用命名空间 "B" 中定义的类 "D""foo" 方法
            // 如果类 "B\D" 未找到,则尝试自动装载类 "B\D"

\B\foo();   // 调用命名空间 "B" 中的函数 "foo" 

\B::foo();  // 调用全局空间中的类 "B""foo" 方法
            // 如果类 "B" 未找到,则尝试自动装载类 "B"

// 当前命名空间中的静态方法或函数

A\B::foo();   // 调用命名空间 "A\A" 中定义的类 "B""foo" 方法
              // 如果类 "A\A\B" 未找到,则尝试自动装载类 "A\A\B"

\A\B::foo();  // 调用命名空间 "A" 中定义的类 "B""foo" 方法
              // 如果类 "A\B" 未找到,则尝试自动装载类 "A\B"
?>

在这里插入图片描述

关注我,不迷路,共学习,同进步

关注我,不迷路,共学习,同进步

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java——类和对象

目录 一.类定义和使用 1.简单认识类 2.类的定义格式 3.注意事项 二.课堂练习 1.定义一个狗类 2.定义一个学生类 3.注意事项&#xff1a; 三.类的实例化 1.什么是实例化 2.注意事项 3.类和对象的说明 四.this引用 1.为什么要有this引用 2.什么是this引用 五.对…

MySQL进阶二

目录 1.使用环境 2.排序窗口函数 3.聚合窗口函数 1.使用环境 数据库&#xff1a;MySQL 8.0.30 客户端&#xff1a;Navicat 15.0.12 接续MySQL进阶一&#xff1a; MySQL进阶一-CSDN博客文章浏览阅读452次&#xff0c;点赞9次&#xff0c;收藏4次。MySQL进阶操作一。https…

ThignsBoard通过服务端订阅共享属性

MQTT基础 客户端 MQTT连接 通过服务端订阅属性 案例 1、首先需要创建整个设备的信息&#xff0c;并复制访问令牌 ​​2、通过工具MQTTX连接上对应的Topic 3、测试链接是否成功 4、在MQTT上订阅对应的Topic 5、在客户端添加共享属性信息 6、查看整个设备的遥测数据 M…

Qt 窗⼝

Qt 窗⼝ 菜单栏创建菜单栏在菜单栏中添加菜单创建菜单项在菜单项之间添加分割线综合⽰例 ⼯具栏创建⼯具栏设置停靠位置设置浮动属性设置移动属性综合⽰例状态栏状态栏的创建在状态栏中显⽰实时消息在状态栏中显⽰永久消息 浮动窗⼝浮动窗⼝的创建设置停靠的位置 对话框对话框介…

Spring声明式事务控制

文章目录 1.编程式事务控制相关对象(了解即可)1.1PlarformTransactionManager1.2 TransactionDefinition 2.基于XML的声明式事务控制2.1声明式事务控制的实现 3.基于注解的声明式事务控制 1.编程式事务控制相关对象(了解即可) 1.1PlarformTransactionManager PlatformTransac…

NL2SQL实践系列(1):深入解析Prompt工程在text2sql中的应用技巧

NL2SQL实践系列(1)&#xff1a;深入解析Prompt工程在text2sql中的应用技巧 NL2SQL基础系列(1)&#xff1a;业界顶尖排行榜、权威测评数据集及LLM大模型&#xff08;Spider vs BIRD&#xff09;全面对比优劣分析[Text2SQL、Text2DSL] NL2SQL基础系列(2)&#xff1a;主流大模型…

LLM应用开发框架LangChain

1、LangChain简介 1.1、LangChain发展史 LangChain 的作者是 Harrison Chase&#xff0c;最初是于 2022 年 10 月开源的一个项目&#xff0c;在 GitHub 上获得大量关注之后迅速转变为一家初创公司。2017 年 Harrison Chase 还在哈佛上大学&#xff0c;如今已是硅谷的一家热门…

314_C++_QT表格的撤销、恢复,可对多行、多item进行撤销、恢复操作

行–删除后的,撤销、恢复图示: 原图示 删除后 撤销操作 恢复操作 item修改后的撤销、恢复 原item 撤销修改 恢复修改 代码: --</

vue快速入门(二十四)输入停顿再进行响应

注释很详细&#xff0c;直接上代码 上一篇 新增内容 使用侦听器监视数据变化情况使用clearTimeout与定时器实现停顿一段时间再操作内容 源码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"view…

Chatgpt掘金之旅—有爱AI商业实战篇|播客剧本写作|(十三)

演示站点&#xff1a; https://ai.uaai.cn 对话模块 官方论坛&#xff1a; www.jingyuai.com 京娱AI 一、AI技术创业播客剧本写作服务有哪些机会&#xff1f; 人工智能&#xff08;AI&#xff09;技术作为当今科技创新的前沿领域&#xff0c;为创业者提供了广阔的机会和挑战。…

代码随想录算法训练营第三十九天|62.不同路径、63.不同路径II

代码随想录算法训练营第三十九天|62.不同路径、63.不同路径II 62.不同路径 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为…

nginx反向代理conf

打开nginx配置。 对登录功能测试完毕后&#xff0c;接下来&#xff0c;我们思考一个问题&#xff1a;前端发送的请求&#xff0c;是如何请求到后端服务的&#xff1f; 前端请求地址&#xff1a;http://localhost/api/employee/login 后端接口地址&#xff1a;http://localho…

[leetcode]maximum-width-of-binary-tree

. - 力扣&#xff08;LeetCode&#xff09; 给你一棵二叉树的根节点 root &#xff0c;返回树的 最大宽度 。 树的 最大宽度 是所有层中最大的 宽度 。 每一层的 宽度 被定义为该层最左和最右的非空节点&#xff08;即&#xff0c;两个端点&#xff09;之间的长度。将这个二叉…

使用python编写网页自动答题-仿真考试

自动化实践经验分享 监听数据包地址&#xff1a;通过监听数据包地址&#xff0c;可以获得实时的答案信息&#xff0c;确保答题的准确性和实效性。提取答案内容&#xff1a;使用正则表达式和json模块&#xff0c;可以快速提取和处理答案信息。答题操作&#xff1a;根据答案内容…

前端三剑客 —— JavaScript (第八节)

目录 内容回顾&#xff1a; 事件对象 事件对象 事件对象的方法和属性 案例-移动DIV 案例-图片轮换 Ajax 内容回顾&#xff1a; 事件对象 1.1 什么是事件驱动 1.2 事件绑定 事件源&#xff1a;发生事件的源对象 事件对象&#xff1a;它包含了事件所有的信息&#xff0c;它…

深拷贝总结

JSON.parse(JSON.stringify(obj)) 这行代码的运行过程&#xff0c;就是利用 JSON.stringify 将js对象序列化&#xff08;JSON字符串&#xff09;&#xff0c;再使用JSON.parse来反序列化&#xff08;还原&#xff09;js对象&#xff1b;序列化的作用是存储和传输。&#xff08…

JavaScript(六)-高级篇

文章目录 作用域局部作用域全局作用域作用域链JS垃圾回收机制闭包变量提升 函数进阶函数提升函数参数动态参数多余参数 箭头函数 解构赋值数组解构对象解构 遍历数组forEach方法&#xff08;重点&#xff09;构造函数深入对象创建对象的三种方式构造函数实例成员 & 静态成员…

软考系规第2章思维导图,软硬件网络和次新技术大杂烩

虽然目前系统规划与管理师的教程是否改版存在不确定性&#xff0c;但是不影响咱们先概要了解当前的教程&#xff0c;使用思维导图的方式粗读教程。 为了帮助你更好的学习系规教程&#xff0c;降低系规教程阅读门槛&#xff0c;指尖疯特发起了教程伴读活动&#xff0c;通过伴读脑…

国内开通gpt会员方法

ChatGPT镜像 今天在知乎看到一个问题&#xff1a;“平民不参与内测的话没有账号还有机会使用ChatGPT吗&#xff1f;” 从去年GPT大火到现在&#xff0c;关于GPT的消息铺天盖地&#xff0c;真要有心想要去用&#xff0c;途径很多&#xff0c;别的不说&#xff0c;国内GPT的镜像…

全局代理导致JetBrains IDE CPU占用高,jdk.internal.net.http.common

GoLand版本&#xff1a;2022.3.4 解决办法&#xff1a; 使用SOCKS代理代替HTTP代理 禁用Space和Code With Me插件 禁用 TLS V1.3&#xff0c;参考&#xff1a;https://stackoverflow.com/questions/54485755/java-11-httpclient-leads-to-endless-ssl-loop 参考 https://…