为了账号安全,请及时绑定邮箱和手机立即绑定

求教,变量的命名问题

限时抢购里我想要把时间在个位数的时候变成十进制,所以添加了一个函数,然后发现当如下代码命名为m,s,和h时程序就能运行,如果改成a, b, c就不行,为什么?变量的命名有什么特别规则吗?

具体代码如下:

function checktime(i){

   if(i<10){

       i="0"+i;

   }  

     

     return i;

 }     

function FreshTime()

{

        var endtime=new Date("2016/5/15,2:20:12");//结束时间

        var nowtime = new Date();//当前时间

        var lefttime= (endtime.getTime()-nowtime.getTime())/1000; 

         d=  parseInt(lefttime/(24*60*60)) ;

         h=  parseInt(lefttime/(60*60)%24)  ;

         m=  parseInt((lefttime/60)%60 ) ;

         s=  parseInt(lefttime%60)  ;

        h=checktime(h); 

        m=checktime(m);

        s=checktime(s);

        


正在回答

1 回答

因为JS是一个比较宽松的语言,所以你的变量不声明编译器也不会报错。但是,要记住:

1.用var声明的变量是局部变量,作用范围是你声明的这个句柄之内

2.不声明的变量,比如下面的:

       d=  parseInt(lefttime/(24*60*60)) ;
         h=  parseInt(lefttime/(60*60)%24)  ;
         m=  parseInt((lefttime/60)%60 ) ;
         s=  parseInt(lefttime%60)  ;
        h=checktime(h); 
        m=checktime(m);
        s=checktime(s);

d,h,m,s全部都是全局变量,在整个JS都会起作用。

3.推荐使用var,因为全局变量不仅消耗内存,最重要的是不好把控作用范围。

    所以你的问题就是给变量加上var,就可以了。

PS:你的代码我放到WebStrom里面把h,m,s改了a,b,c,可以运行,说不定是因为你在JS里面其他地方定义了a,b,c,所以才会有冲突。

0 回复 有任何疑惑可以回复我~
#1

你若盛开0 提问者

谢谢你,又了解了全局变量和局部变量的概念
2016-04-12 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
倒计时效果
  • 参与学习       55626    人
  • 解答问题       242    个

电商网站限时抢购倒计时效果计算思路和方法,前端开发必备技术

进入课程

求教,变量的命名问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信