当前位置: 首页 > news >正文

JavaScript高级程序设计基础(二)

二、语言基础

2.1语法

(简单的语法基础将在文章省略)

2.1.1严格模式

严格模式是一种不同的 JavaScript 解析和执行模型,不规范写法在这种模式下会被处理
只需在脚本开头加上"use strict"
也可以单独指定一个函数在严格模式下执行,只要把这个预处理指令放到函数体开头即可
function doSomething() { "use strict"; // 函数体 
}

2.1.2语句

ECMAScript 中的语句以分号结尾有助于避免内容不完整,压缩代码,提升性能

2.2变量

2.2.1var

var操作符定义的变量会成为包含它的函数的局部变量。如果在函数内省略var操作符,就会成为全局变量(不建议)

var具有声明提升,此外,可以反复多次用var声明同一个变量

2.2.2 let

let 声明的范围是块作用域,且不允许出现冗余声明。

 var和let区别:

var是函数作用域,let是块作用域

if (true) { var name = 'Matt'; console.log(name); // Matt 
} 
console.log(name); // Mattif (true) { let age = 26; console.log(age); // 26 
} 
console.log(age); // ReferenceError: age 没有定义

(JavaScript 引擎会记录用于变量声明的标识符及其所在的块作用域,嵌套使用相同的标识符不会报错)

let age=26
if(true){let age=30;console.log(age)//30
}

1.暂时性死区

在let中,如果引用未声明的变量,则会抛出ReferenceError,并且将其称为暂时性死区

2.全局声明

var 关键字不同,使用 let 在全局作用域中声明的变量不会成为 window 对象的属性

3.条件声明

因为 let 的作用域是块,所以不可能检查前面是否已经使用 let 声明过同名变量,同时也就不可能在没有声明的情况下声明它(参考暂时性死区)

<script>  let age = 26; 
</script> 
<script> // 假设脚本不确定页面中是否已经声明了同名变量// 那它可以假设还没有声明过,即age=26还未被声明过let age = 36; // age 之前声明过,这里会报错
</script>

4.for循环中的let声明

在let出现之前,一直用的var声明i,则将会导致,i渗透到循环体外部

for (var i = 0; i < 5; ++i) { setTimeout(() => console.log(i), 0) 
}
// 实际上会输出 5、5、5、5、5for (let i = 0; i < 5; ++i) { setTimeout(() => console.log(i), 0) 
} 
// 会输出 0、1、2、3、4

 执行超时逻辑会被放在循环结束之后,此时var则是退出循环的值:5。而如果使用let,那么每次循环都会有一个新的let,赋值分别为0,1,2,3,4

2.2.3 const

显著区别:声明变量时必须同时初始化变量

1.const后续不能修改变量,不能重复声明

2.const的作用域是块

const name='123'
if(true){
const name='11'
}
console.log(name) //123

3.const 声明的限制

const 声明的限制只适用于它指向的变量的引用。换句话说,如果 const 变量引用的是一个对象,
那么修改这个对象内部的属性并不违反 const 的限制
虽然for循环不能用const来声明迭代变量
但是可以将const 用于for...in和for...of,相当于每次循环都创建了一个新的const

建议使用变量声明优先级:const>let>var

2.3数据类型

ECMAScript 6 种简单数据类型(也称为 原始类型 ): Undefined Null Boolean Number
String 和 Symbol。还有一种复杂数据类型叫 Object

2.3.1typeof

typeof 是一个操作符而不是函数
console.log(typeof '123')//string

注意:调用typeof null 返回的是"object"。这是因为特殊值 null 被认为是一个对空对象的引用

严格来讲,函数在 ECMAScript 中被认为是对象。
可是, 函数也有自己特殊的属性。为此,就有必要通过 typeof 操作符来区分函数和其他对象

2.3.2undefined类型

当使用 var let 声明了变量但没有初始化时,就相当于给变量赋予了 undefined
目的: 明确空对象指针( null )和未初始化变量的区别

但是未声明的变量使用typeof也是undefined,因为他们都属于无法执行实际操作

2.3.3null类型

注意: undefined 值是由 null 值派生而来的,因此 ECMA-262 将它们定义为表面上相等

 null 是一个假值,但也有其他可能是假值的情况

let message = null; 
let age; 
if (message) { // 这个块不会执行
} 
if (!message) { // 这个块会执行
} if (age) { // 这个块不会执行
} 
if (!age) { // 这个块会执行
}

 2.3.4boolean类型

(持续更新中~)

相关文章:

JavaScript高级程序设计基础(二)

二、语言基础 2.1语法 &#xff08;简单的语法基础将在文章省略&#xff09; 2.1.1严格模式 严格模式是一种不同的 JavaScript 解析和执行模型&#xff0c;不规范写法在这种模式下会被处理 只需在脚本开头加上"use strict" 也可以单独指定一个函数在严格模式下执…...

使用Spring Boot开发自习室预定系统

开发一个自习室预定系统涉及到用户管理、自习室管理、预定管理等功能。以下是使用Spring Boot开发自习室预定系统的步骤和关键点&#xff1a; 1. 需求分析 确定系统的基本需求&#xff0c;例如&#xff1a; 用户注册和登录管理员管理自习室信息用户浏览可用自习室用户预定自…...

最近读书总结

1《More Joel on Software》读后感【2024年8月29日】 1.1 本书概要 本书讲解了如何发现优秀的IT人才&#xff0c;并把他们招聘进来&#xff1b;如何对智力密集型的IT企业&#xff08;软件企业&#xff09;进行管理&#xff0c;即最好采用情感认同法&#xff1b;对计算机大学生…...

python列表判断是否为空的三种方式

#列表是否为空判断 a[]一&#xff1a; if a:print(not null) else:print(null)二&#xff1a; b len(a) if b 0:print(null) else:print(not null)三&#xff1a; if not a:print(null) else:print(not null)运行结果&#xff1a;...

二十三种模式之原型模式(类比制作陶器更好理解一些)

1. 设计模式的分类 创建型模式(五种)&#xff1a;工厂方法模式、单例模式、抽象工厂模式、原型模式、建造者模式。 结构型模式(七种)&#xff1a;适配器模式、代理模式、装饰器模式、桥接模式、外观模式、享元模式、组合模式。 行为型模式(十一种)&#xff1a;状态模式、模板方…...

9.9日记录

1.常见排序算法的复杂度 1.快速排序 1.1快速排序为什么快 从名称上就能看出&#xff0c;快速排序在效率方面应该具有一定的优势。尽管快速排序的平均时间复杂度与“归并排序”和“堆排序”相同&#xff0c;但通常快速排序的效率更高&#xff0c;主要有以下原因。 出现最差情况…...

鸿蒙交互事件开发04——手势事件

1 概 述 手势事件是移动应用开发中最常见的事件之一&#xff0c;鸿蒙提供了一些方法来绑定手势事件。通过给各个组件绑定不同的手势事件&#xff0c;并设计事件的响应方式&#xff0c;当手势识别成功时&#xff0c;ArkUI框架将通过事件回调通知组件手势识别的结果。 …...

研1日记9

1.理解conv1d和conv2d a. 1和2处理的数据不同&#xff0c;1维数据和图像 b. 例如x输入形状为(32,19,512)时&#xff0c;卷积公式是针对512的&#xff0c;而19应该变换为参数中指定的输出通道。 2.“SE块”&#xff08;Squeeze-and-Excitation Block&#xff09;它可以帮助模…...

HAL库学习目录查询表

日期内容2024.09.11基于STM32C8T6的CubeMX&#xff1a;HAL库点亮LED2024.09.11STMCuBeMX新建项目的两种匪夷所思的问题2024.09.11STMCubeMX文件下载后会出现其他项目无法下载的问题...

pandas DataFrame日期字段数据处理

pandas DataFrame日期字段数据处理 1、pandas读取表格文件日期字段存入数据库不需要时分秒 在使用 pandas 读取表格文件,并将日期字段存入数据库时,如果你只关心日期部分而不需要时分秒,可以通过以下步骤来处理: 读取数据并转换日期字段: 首先,你需要读取你的数据,并确…...

swift:qwen2 VL 多模态图文模型lora微调swift

参考: https://swift.readthedocs.io/zh-cn/latest/Multi-Modal/qwen2-vl%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5.html 在线demo: https://colab.research.google.com/drive/16yl6Z0wxHLX3qJ5q-SIbvPn251k3r2JC?usp=sharing 安装: !git clone https://github.com/modelsc…...

Vue.js中computed的使用方法

在Vue.js中&#xff0c;computed 属性是基于它们的依赖进行缓存的响应式属性。只有当相关依赖发生改变时&#xff0c;才会重新求值。这意味着只要computed属性依赖的源数据&#xff08;如data中的属性&#xff09;没有发生变化&#xff0c;多次访问computed属性会立即返回之前的…...

python之pyecharts制作可视化数据大屏

文章目录 前言一、安装 Pyecharts二、创建 Pyecharts 图表三、设计大屏布局四、实时数据更新五、部署和展示总结前言 使用 Pyecharts 制作可视化数据大屏是一个复杂但有趣的过程,因为 Pyecharts 本身是一个用于生成 Echarts 图表的 Python 库,而 Echarts 是由百度开发的一个…...

Chrome、Edge、360及Firefox浏览器加载多个ActiveX插件的介绍

allWebPlugin简介 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品&#xff0c;致力于将浏览器插件重新应用到所有浏览器。它将现有ActiveX控件直接嵌入浏览器&#xff0c;实现插件加载、界面显示、接口调用、事件回调等。支持Chrome、Firefo…...

裸金属服务器与云服务器的区别有哪些?

随着云计算服务的快速发展&#xff0c;云服务器与裸金属服务器则称为各大企业基础设施的两大核心选择&#xff0c;会运用在不同的场景当中&#xff0c;本文就来介绍一下裸金属服务器与云服务器的区别都有哪些吧&#xff01; 裸金属服务器相对于云服务器来说有着卓越的性能&…...

Pr:序列设置 - VR 视频

在“新建序列”对话框的“VR 视频” VR Video选项卡&#xff0c;或者在“序列设置”对话框的“VR 属性” VR Properties选项卡中&#xff0c;允许用户创建和编辑虚拟现实 (VR) 视频序列。 VR 视频能够提供 360 沉浸式的观看体验&#xff0c;通常使用专门的相机进行拍摄&#xf…...

采用qt做一个命令行终端

qt做一个类似系统命令行终端的工具&#xff0c;方便集成到自己的软件里使用&#xff0c;这样能保证软件的整体性&#xff0c;而且是真正的做到和系统命令行终端一样的交互方式&#xff0c;而不是单独搞个编辑框的方式输入命令&#xff08;大部分博客都是做成这个样子&#xff0…...

TQA相关

ReAct Prompting: 原理、实现与应用 ReAct Prompting&#xff08;推理与行动提示&#xff09;是一种引导大型语言模型&#xff08;LLM&#xff09;进行推理和行动的策略&#xff0c;广泛应用于复杂问题求解、对话生成和自动化任务等领域。ReAct Prompting 通过将模型的思考过程…...

Spring Cloud之二 微服务注册

1&#xff1a;Intellij 新建服务 user-service 2&#xff1a;pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"…...

[Web安全 网络安全]-文件上传漏洞

文章目录&#xff1a; 一&#xff1a;前言 1.什么是文件上传漏洞 2.环境 2.1 靶场 2.2 其他工具 3.木马分类 二&#xff1a;文件上传分类 1.客户端 JS绕过 2.服务端-黑名单 大小写绕过 点和空格绕过 .htaccess文件绕过 php345文件绕过 windows ::$DATA绕过 3.…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问&#xff08;基础概念问题&#xff09; 1. 请解释Spring框架的核心容器是什么&#xff1f;它在Spring中起到什么作用&#xff1f; Spring框架的核心容器是IoC容器&#…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...