JS中常用占位符使用方法详解_ |%s|%d|%f|%o|%O|%c|

本文介绍了JavaScript中字符串格式化的占位符%s的用法,以及与模板字符串和C语言printf函数的关联。同时讲解了%d、%f、%o、%i、%O和%C等不同类型的占位符及其用途,以及它们在console.log中的应用。

在 JavaScript 中,%s 是一种字符串格式化占位符,用于将字符串插入到另一个字符串中的指定位置。这种方法基于 C 语言的 printf() 函数,但在 JavaScript 中有一些变化。

在 JavaScript 中,%s 可以接受任何类型的值,并将其转换为字符串类型。例如:

const name = 'John';
const age = 30;
// 输出:My name is John, and I am 30 years old.
console.log('My name is %s, and I am %s years old.', name, age);

// 直接用于字符串参数输出
console.log("%s","first","second"); // 输出结果:first second
// 将对象转换为普通字符串后执行
console.log("%s","zzk",{name:"zzk"}); // 输出结果:zzk { name: 'zzk' }

在上述代码中,%s 占位符被替换为字符串类型的变量 name 和 age 的值。注意,在使用模板字符串时,也可以使用 ${} 来插入变量,例如:

const name = 'John'; 
const age = 30; 
// 输出:My name is John, and I am 30 years old. 
console.log(`My name is ${name}, and I am ${age} years old.`); 

在大多数情况下,使用 ${} 会更方便和易读,但在一些旧的代码库或遗留代码中,可能会看到使用 %s 的字符串格式化语法。

在 JavaScript 中,除了常见的 %s 以外,还有其他的占位符,包括:

%d用于表示数字类型的占位符,例如:

// 直接用于数值参数输出
console.log('My age is %d', 30); // 输出:My age is 30

// 将字符串作为数值进行转换
console.log("%d","25.6"); // 输出结果:25.6
console.log("%d","zzk"); // 输出结果:zzk

%i和%d 没有区别,%i 是老式写法,都是整型格式。

C语言中 %d 与 %i 的区别:

  • 在printf格式串中使用时,没有区别。
  • 在scanf格式串中使用时,有一点区别:在scanf格式中,%d只与十进形式的整数相匹配。而%i可以匹配八进制、十进制、十六进制表示的整数。

%f用于表示浮点型数字类型的占位符,例如:

console.log('My weight is %f kg', 65.5); // 输出:My weight is 65.5 kg

%o:用于表示对象类型的占位符,例如:

const person = { name: 'John', age: 30 }; 
​​​​​​​// 输出:{name: "John", age: 30} 
console.log('%o', person); 

// 输出:Server running on {port: 9090}
console.log('Server running on %o', {port: 9090});

%O:与 %o 相似,用于表示对象类型的占位符,区别在于它会以更易读的方式输出对象,例如:

const person = { name: 'John', age: 30 };
​​​​​​​// 输出: // { // age: 30, // name: "John" // }
console.log('%O', person);

:%o和%O的区别

%o、%O都是用来输出Object对象的,对普通的Object对象,两者没区别,但是打印dom节点时不一样:

使用%o输出和不使用格式化输出打印出来的结果一样,你可以查看这个dom节点的内容、子节点等;而使用%O,你看到的则是该dom节点各个对象属性

参考浏览器控制台常用命令小结之console.log信息输出

%c:用于在控制台输出带有样式的文本(CSS 格式字符串),例如:

​​​​​​​// 输出:在控制台中输出红色字体,大小为20px的 Hello World 
console.log('%cHello World', 'color: red; font-size: 20px;'); 

这些占位符可以帮助开发者在调试过程中更方便地输出相关信息,从而更加高效地解决问题。

参考资料

浏览器控制台常用命令小结之console.log信息输出

JS占位符及其多种用途_设计学院 | JS字符串拼接占位符及conlose对象Api详解_脚本之家

<think>好的,我现在需要回答用户关于GPIO_PIN_2、GPIO_PIN_3和GPIO_PIN_4的定义及功能的问题。首先,我得回忆一下嵌入式开发中GPIO的基本概念。GPIO是通用输入输出引脚,每个引脚可以配置为输入或输出,用于与外部设备通信。 根据用户提供的引用内容,特别是引用[1]中的宏定义IS_GET_GPIO_PIN,里面列举了从GPIO_Pin_0到GPIO_Pin_15的引脚,说明这些是预定义的引脚编号。每个GPIO_Pin_x对应一个特定的引脚,比如GPIO_PIN_2就是第2号引脚。 接下来,用户提到的GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4,这里用按位或操作符组合多个引脚,常见于同时配置多个引脚的情况。例如,在设置GPIO的初始化结构体时,可能需要同时使能多个引脚,这时候就会用这种位掩码的方式。 然后,功能方面,每个GPIO引脚的具体功能取决于硬件设计和配置。比如,引用[3]中提到的GPIO_PinAFConfig函数,用于配置引脚的复用功能,可能涉及不同的AF模式(如GPIO_AF_4)。所以,这些引脚可能被配置为UART、SPI、I2C等外设接口,或者普通的输入输出。 需要确认的是,GPIO_PIN_x的定义通常对应于特定的位位置,例如GPIO_Pin_2对应第2位,这样在寄存器中可以通过位操作来设置或清除。例如,设置GPIOA的2、3、4引脚为输出,可能需要将这些引脚的值按位或后赋值到相应的寄存器。 另外,引用[2]中的GPIO_PinState枚举类型,用于设置引脚的状态(高电平或低电平),当操作这些引脚时,可以使用该枚举类型来设置引脚的电平状态,提高代码可读性。 用户可能还想知道如何在实际代码中使用这些引脚组合。例如,初始化时配置多个引脚为输出,或者读取多个引脚的状态。需要举一个例子说明,比如使用HAL库配置GPIO,或者直接操作寄存器。 需要注意的是,不同厂商的MCU可能在GPIO的命名和定义上有细微差别,但基本概念是相似的。用户的问题中没有提到具体型号,所以回答需要保持一般性,但可以结合提供的引用内容,这些引用似乎来自STM32的库函数,因此可以假设是基于STM32的开发。 总结一下,回答的结构应该是先解释单个引脚的定义,再说明组合使用的场景,比如同时配置多个引脚,并举例说明常见的应用,如控制LED、读取按键、配置为外设功能等。同时,需要提到相关的函数和枚举类型,如GPIO_PinAFConfig和GPIO_PinState,以增强实用性。</think>### GPIO_PIN_2/3/4的定义及功能解析 #### 1. 引脚定义 GPIO_PIN_2、GPIO_PIN_3、GPIO_PIN_4是嵌入式系统中预定义的引脚编号宏,用于标识物理芯片上的特定引脚。它们的本质是通过位掩码实现的宏定义: - $GPIO\_PIN\_2 = 2^2 = 0x0004$ - $GPIO\_PIN\_3 = 2^3 = 0x0008$ - $GPIO\_PIN\_4 = 2^4 = 0x0010$ 在代码中常通过按位或组合使用,如$GPIO\_PIN\_2 | GPIO\_PIN\_3 | GPIO\_PIN\_4$,表示同时操作三个引脚[^1]。 #### 2. 核心功能 **输入模式**: - 读取外部信号电平(高/低) - 检测按键状态 - 接收传感器数字信号 **输出模式**: - 控制LED亮灭 - 驱动继电器 - 发送数字控制信号 **复用功能**: - 通过AF配置为UART、SPI、I2C等外设接口 - 例如配置为USART_TX/USART_RX时,需调用$GPIO\_PinAFConfig()$函数指定复用功能编号[^3] #### 3. 典型应用场景 ```c // 同时初始化三个LED引脚 GPIO_InitTypeDef GPIO_InitStruct = { .Pin = GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4, .Mode = GPIO_MODE_OUTPUT_PP, .Pull = GPIO_NOPULL, .Speed = GPIO_SPEED_FREQ_LOW }; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); // 批量操作引脚电平 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2|GPIO_PIN_3, GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET); ``` #### 4. 寄存器级操作原理 当使用$GPIOx->BSRR = GPIO_PIN_2$时: - 对32位寄存器进行位操作 - BSRR寄存器高16位用于复位,低16位用于置位 - 例如写入$0x00040000$会复位PIN2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

儒雅的烤地瓜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值