当前位置: 首页 > 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.…...

Windows远程桌面终极解锁指南:如何免费开启多用户并发连接

Windows远程桌面终极解锁指南&#xff1a;如何免费开启多用户并发连接 【免费下载链接】rdpwrap RDP Wrapper Library 项目地址: https://gitcode.com/gh_mirrors/rd/rdpwrap 还在为Windows家庭版无法使用远程桌面而烦恼吗&#xff1f;RDP Wrapper Library这款开源工具能…...

Python/Numpy线性代数编程:DeepLearningBook-Notes代码实现完整手册

Python/Numpy线性代数编程&#xff1a;DeepLearningBook-Notes代码实现完整手册 【免费下载链接】deepLearningBook-Notes Notes on the Deep Learning book from Ian Goodfellow, Yoshua Bengio and Aaron Courville (2016) 项目地址: https://gitcode.com/gh_mirrors/de/de…...

Vue3 表单深度解析

Vue3 表单深度解析 引言 随着前端技术的发展,Vue.js 已经成为最受欢迎的前端框架之一。Vue3 作为 Vue.js 的最新版本,带来了许多改进和新特性。其中,表单处理是 Vue3 中一个非常重要的部分。本文将深入解析 Vue3 表单的用法、特点以及最佳实践。 Vue3 表单概述 在 Vue3 …...

Purple Pi OH开发板适配OpenHarmony 5.0全流程解析与实战

1. 项目概述&#xff1a;从一块开发板到OpenHarmony 5.0的完整旅程最近&#xff0c;我手头的这块触觉智能Purple Pi OH开发板&#xff0c;终于成功跑通了OpenHarmony 5.0 Release版本。这不仅仅是一次简单的系统升级适配&#xff0c;更像是一场从硬件引脚定义、内核驱动、系统服…...

AI芯片性能优化实战:Polyhedral编译在深度学习部署中的挑战与解决方案

1. 项目概述&#xff1a;当AI算法遇上硬件“翻译官”最近几年&#xff0c;AI模型从实验室走向千家万户&#xff0c;从云端服务器部署到我们口袋里的手机&#xff0c;这个过程中有一个角色至关重要&#xff0c;却又常常被算法工程师们视为“黑盒”——那就是AI芯片。我们写的PyT…...

别再只画折线图了!用Python的pyts库5分钟搞定时间序列的递归图(Recurrence Plot)可视化

解锁时间序列分析新维度&#xff1a;用Python高效构建递归图 时间序列分析早已超越了简单的折线图时代。当我们需要挖掘数据中隐藏的周期性、突变点或非线性特征时&#xff0c;传统可视化方法往往力不从心。递归图(Recurrence Plot)作为一种强大的分析工具&#xff0c;能够将时…...

加速3DGS生成与数字孪生开发:不可错过的8款效率工具盘点

一、行业核心技术科普&#xff1a;3DGS数字孪生开发的工具链概览一个高效的3DGS数字孪生开发流程&#xff0c;离不开一套完整的工具链。从数据采集、模型生成、格式优化到应用开发与部署&#xff0c;每个环节都有其专用的工具。其域创新围绕“感知—重建—理解—创造”的技术路…...

Hermes Agent框架对接Taotoken自定义供应商的配置指南

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Hermes Agent框架对接Taotoken自定义供应商的配置指南 对于使用Hermes Agent框架的开发者而言&#xff0c;能够灵活接入不同的模型…...

LeetCode 每日一题笔记 日期:2026.05.16 题目:154. 寻找旋转排序数组中的最小值 II

LeetCode 每日一题笔记 0. 前言 日期&#xff1a;2026.05.16题目&#xff1a;154. 寻找旋转排序数组中的最小值 II难度&#xff1a;困难标签&#xff1a;数组、二分查找 1. 题目理解 问题描述&#xff1a; 给定一个可能存在重复元素的升序数组&#xff0c;经过1~n次旋转后&…...

从蓝桥杯嵌入式真题到项目实战:如何把赛题代码改造成一个可配置的电压监控系统?

从竞赛到实战&#xff1a;构建可配置电压监控系统的嵌入式开发指南 参加过蓝桥杯嵌入式竞赛的同学&#xff0c;往往在赛后会有这样的困惑&#xff1a;那些为比赛而写的代码&#xff0c;真的能在实际项目中复用吗&#xff1f;答案当然是肯定的。本文将带你从第十届蓝桥杯嵌入式真…...