02-语法、规范、错误、运算符、判断分支、注释

本文详细介绍了JavaScript中的语法规范,包括语句结尾加分号的习惯、错误类型及其影响、运算符的使用,特别是+号和/号的特殊情况。此外,还讲解了如何交换变量值、自增自减运算符的运用以及比较运算符的规则。同时,讨论了逻辑运算符的短路行为,并提到了注释的两种形式。最后,文中提到了条件判断语句if和switch的适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、书写的语法规范

1、养成良好的习惯,语句结尾写分号。除了一下if、for、switch、function等不需要写,其他都写上。

2、符号两头都需要加上空格!如var a = b + c;

二、错误

1、语法错误,全部代码都不会执行。

2、引用错误,中断执行,错误后面的代码都不执行。

3、脚本块与脚本块之间的错误是不会互相影响的。

注:后面会系统将错误。此处大概了解一下即可。

三、运算符

1、基本的+-*/%()就不说了

2、关于+号运算符

1、任意数据类型的值字符串相加都会变成字符串,

如 '123' + false = '123false'、'123' + undefined = '123undefined'

2、运算按照常规自左向右加。如 'str' + 1 + 1 = 'str11'; 1 + 1 + 'str' + (1 + 1) = '2str2'

3、关于/号

正常的除法就不多说了。

1、特殊的 0 / 0 = NaN。Not a Number.

2、NaN的数据类型为Number

3、1 / 0 = Infinity。数据类型为Number。

4、-1 / 0 = -Infinity。数据类型为Number。

四、关于如何交换值

1、使用中转变量

var a = 1,

b = 2;

var c = a;

a = b;

b = c;

2、镜像置换法(不用声明新的变量)

var a = 1,

b = 2;

a = a + b;

b = a - b;

a = a - b;

五、关于自增自减运算符

++、--都是比较简单的。我们只需要记住,符号在前面,那么就是先运算后操作符号在后面,就是先操作后运算。

如 var a = 1;

console.log(++a); // 先运算,后操作 --> 2

console.log(a--); // 先操作,后运算 --> 2

难题1:

var a = 5, b;

b = a-- + --a;

console.log(a, b)

注意这道题,一个在前自减一个后自减,因为后自减先不算,直接取值,但是!这里不是直接取5,因为后边有一个--a,这个是先对a进行运算,所以a的值就变为4了。所以b = 4 + 4 = 8;注意不是 5 + 4 = 9哈。

难题2:

var a = 5, b;

b = --a + --a;

console.log(a, b)

这道题又是一个坑。a最后肯定是3毫无疑问。但是b呢?b的值为7。因为两个--是各自独立的。第一个--a时,a = 4,第二个--a时,a=3;4 + 3 = 7;

六、关于比较运算符

<、>、>=、<=、==、===、!=、!==

难点:

1、数字与数字字符串相比,字符串转化为数字在进行比较

如 1 < '12' ===> true,因为'12'会转化为数字在进行数字间的比较。

2、数字与不是数字的字符串相比,则都为false

如 1 < 'ac' 或者 1 > 'ac' ,都是false

3、字符串之间的比较,按每个字符位置进行对比

如 'ab' > 'bcd' ===> 先使用左边字符串'ab'中的'a'的ASCII码右边字符串'bcd'中的'b'的ASCII码进行比较,发现'b'的ASCII比'a'的ASCII大,则得出结果false。如果两个ASCII一样,则继续往下一个字符对比。

4、关于==与===的区别

==只比较值是不是相等,而不关心其数据类型。如null == undefined是true

而===的意思是全等,即数据类型与值都必须得相等才能为true

5、关于NaN

NaN是唯一一个与包括自己在内的任何东西都不相等的值。

如NaN === NaN、NaN ==NaN都是false。

七、条件判断

if...else if...else

switch

什么时候用if,什么时候用switch?

1、一般来说,判断某一个范围的,比如成绩范围,用if合适;

2、如果是定值的,用switch合适,因为switch是匹配相同的值,比如给定某个城市查询平均薪资。

八、逻辑运算符

1、为假的几个值

undefined、null、NaN、""、0、false

除了上面6个值,其他值全部都是真

2、&& 与 || 的规律(重要)

1. &&

遇到真就往后走,遇到或者走到最后返回当前的值(注意是返回当前的值,而不是返回true/false)。一假则假的道理。

1 && 1 返回1 真

1 && 0 返回0 假

0 && 1 返回0 假

0 && 0 返回0 假

2. ||

遇到假就往后走,遇到或者走到最后就返回当前的值(注意是返回当前的值,而不是返回true/false)。一真则真的道理。

1 || 1 返回1 真

1 || 0 返回1 真

0 || 1 返回1 真

0 || 0 返回0 假

3、取反!

取反返回的结果是布尔值,如!2 == false;

九、注释

1、行注释 //

2、块注释 (注意块注释每行的开头都要星号*,养成习惯)

/*

*

*/

### RT-DETRv3 网络结构分析 RT-DETRv3 是一种基于 Transformer 的实时端到端目标检测算法,其核心在于通过引入分层密集正监督方法以及一系列创新性的训练策略,解决了传统 DETR 模型收敛慢和解码器训练不足的问题。以下是 RT-DETRv3 的主要网络结构特点: #### 1. **基于 CNN 的辅助分支** 为了增强编码器的特征表示能力,RT-DETRv3 引入了一个基于卷积神经网络 (CNN) 的辅助分支[^3]。这一分支提供了密集的监督信号,能够与原始解码器协同工作,从而提升整体性能。 ```python class AuxiliaryBranch(nn.Module): def __init__(self, in_channels, out_channels): super(AuxiliaryBranch, self).__init__() self.conv = nn.Conv2d(in_channels, out_channels, kernel_size=3, padding=1) self.bn = nn.BatchNorm2d(out_channels) def forward(self, x): return F.relu(self.bn(self.conv(x))) ``` 此部分的设计灵感来源于传统的 CNN 架构,例如 YOLO 系列中的 CSPNet 和 PAN 结构[^2],这些技术被用来优化特征提取效率并减少计算开销。 --- #### 2. **自注意力扰动学习策略** 为解决解码器训练不足的问题,RT-DETRv3 提出了一种名为 *self-att 扰动* 的新学习策略。这种策略通过对多个查询组中阳性样本的标签分配进行多样化处理,有效增加了阳例的数量,进而提高了模型的学习能力和泛化性能。 具体实现方式是在训练过程中动态调整注意力权重分布,确保更多的高质量查询可以与真实标注 (Ground Truth) 进行匹配。 --- #### 3. **共享权重解编码器分支** 除了上述改进外,RT-DETRv3 还引入了一个共享权重的解编码器分支,专门用于提供密集的正向监督信号。这一设计不仅简化了模型架构,还显著降低了参数量和推理时间,使其更适合实时应用需求。 ```python class SharedDecoderEncoder(nn.Module): def __init__(self, d_model, nhead, num_layers): super(SharedDecoderEncoder, self).__init__() decoder_layer = nn.TransformerDecoderLayer(d_model=d_model, nhead=nhead) self.decoder = nn.TransformerDecoder(decoder_layer, num_layers=num_layers) def forward(self, tgt, memory): return self.decoder(tgt=tgt, memory=memory) ``` 通过这种方式,RT-DETRv3 实现了高效的目标检测流程,在保持高精度的同时大幅缩短了推理延迟。 --- #### 4. **与其他模型的关系** 值得一提的是,RT-DETRv3 并未完全抛弃经典的 CNN 技术,而是将其与 Transformer 结合起来形成混合架构[^4]。例如,它采用了 YOLO 系列中的 RepNCSP 模块替代冗余的多尺度自注意力层,从而减少了不必要的计算负担。 此外,RT-DETRv3 还借鉴了 DETR 的一对一匹配策略,并在此基础上进行了优化,进一步提升了小目标检测的能力。 --- ### 总结 综上所述,RT-DETRv3 的网络结构主要包括以下几个关键组件:基于 CNN 的辅助分支、自注意力扰动学习策略、共享权重解编码器分支以及混合编码器设计。这些技术创新共同推动了实时目标检测领域的发展,使其在复杂场景下的表现更加出色。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值