一个js中使用status作为变量名产生的问题

问题来源
最近在重新复习js,在通过使用js实现输出质数的时候的发现了一个关于js中用status作为变量名所发生的问题。

			var status = 0;
			for(var i = 2;i <= 100;i++){
				for(var j = 1;j <= i;j++){
					if(i % j == 0){
						status += 1;
					}
				}
				if(status == 2){
					console.log(i);
				}
				status = 0;
			}

在这里我定义了一个变量为 status 的变量名,用于记录在验证质数时的状态值,当 status 等于 2 的时候,代表这个数被整除了两次,则输出这个质数。
但是我在控制台却发现没有任何输出
在这里插入图片描述
这个时候问题很有可能出在了第二个if语句上面,导致没有进入这个分支语句,于是我在它的上面加了一行

console.log(status);

这个时候控制台输出了很多数据,但是这里的数据的类型都是 String 类型,很明显我上面的运算给我当成了字符串连接,但是两边都是 Number 类型,就说明问题出在 status 这个变量名上,于是我将变量名替换了一下。
在这里插入图片描述

			var st = 0;
			for(var i = 2;i <= 100;i++){
				for(var j = 1;j <= i;j++){
					if(i % j == 0){
						st += 1;
					}
				}
				if(st == 2){
					console.log(i);
				}
				st = 0;
			}

这个时候再看控制台
在这里插入图片描述
问题就这样解决了…

于是我在度娘上找了一下相关问题,然后找到了一位大佬遇到的相似问题,大家可以借鉴一下:

一次关于使用status作为变量引发的bug及思考

在这里我也查了一下,其实 status 是DOM Window的一个属性,用于设置或返回窗口状态栏中的文本
在这里插入图片描述
所以在js中变量的命名不仅要避免使用js的关键字、保留字等,也要避免使用Window中的属性。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值