函数提升的优先级大于变量提升的优先级

前言


二者优先级:函数提升会优先于变量提升,而且不会被同名的变量覆盖,但是,如果这个同名变量已经赋值了,那函数变量就会被覆盖。当二者同时存在时,会先指向函数声明。

console.log(a);    //f a() {...}
console.log(a());    //2
var a = 1;
function a() {
  console.log(2);  
}
console.log(a);    //1
a = 3;
console.log(a());    //报错,现在的函数a已经被赋值过后的变量a给覆盖了,无法再调用a()

上述代码相当于如下:

function a() {
  console.log(2);  
}
var a;
console.log(a);    //f a() {...}
console.log(a());    //2
a = 1;
console.log(a);    //1
a = 3;
console.log(a());    //报错,现在的函数a已经被赋值过后的变量a给覆盖了,无法再调用a()
  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在树莓派中,可以使用wiringPi库来设置中断函数优先级。wiringPi是树莓派的GPIO库,可以用于控制引脚和中断,其使用C语言编写,比较简单易用。 wiringPi库提供了一个函数`piHiPri()`,可以将当前进程的调度优先级设置为最高优先级,从而提高中断函数的响应速度。调用该函数需要root权限。 以下是一个示例代码,演示如何在树莓派上使用wiringPi库设置中断函数优先级: ```cpp #include <wiringPi.h> #include <stdio.h> #include <stdlib.h> #include <signal.h> volatile int flag = 0; void myInterrupt(void) { flag = 1; } int main(void) { if (wiringPiSetup() == -1) { printf("wiringPiSetup failed\n"); return 1; } if (piHiPri(99) == -1) { // 将进程优先级设置为99 printf("piHiPri failed\n"); return 1; } pinMode(0, INPUT); wiringPiISR(0, INT_EDGE_FALLING, &myInterrupt); // 设置中断回调函数 while (1) { if (flag == 1) { printf("Interrupt occurred\n"); flag = 0; } } return 0; } ``` 在这个示例代码中,先调用`piHiPri()`函数将进程的优先级设置为99,然后使用`wiringPiISR()`函数将中断回调函数`myInterrupt()`注册到GPIO 0上。当GPIO 0引脚的电平发生下降沿时,中断回调函数将被调用,将flag变量设置为1。在主函数中,检查flag变量是否为1,如果是,则打印一条消息,并将flag变量重置为0。 需要注意的是,将进程优先级设置为99可能会影响其他进程的运行,因此应该谨慎使用。一般情况下,将进程优先级设置为50或60就可以获得较好的响应速度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值