面试淘宝时被问了这个问题
在js中 
alert(MATH.PI++);
alert(++MATH.PI);
的值分别是多少?
然后我回答说 分别是 3.1415926 和 4.1415926
然后面试官又提问说  MATH.PI 是一个常量,他怎么可以应用 ++ 符号呢?
就是这个问题把我问住了,不知道该怎么回答了后来回来之后自己试了一下,弹出的的确是3.1415926 和 4.1415926,但是我不知道面试官的下一个问题是怎么回事,百思不得其解,求高人解释一下。MATH.PI 是一个常量,他怎么可以应用 ++ 符号呢?

解决方案 »

  1.   

    楼主别忘了JS是若类型语言~·它怎么可能会有常量呢?只是大家认为它是常量而已~·可以改变的~·就好比JS没有私有变量~·然后语言规范里说如果有私有变量~·就在变量前边加个下划线说明这是私有变量`~
    这样_siyou  可它还是可以被外界访问啊~·
      

  2.   

    只要像JAVA语言里才有~·常量也就是static  JS 里有static吗? 呵呵~·
      

  3.   


    没记错的话常量是const吧,至少c++是这样的,不知道JAVA是不是static,static是静态变量,可以改变的
      

  4.   

    to MuBeiBei
    照你说的,js中没有常量,那 是不是 我给Math.PI 设置值也可以
    譬如
    Math.PI = 5.1415926;
    alert(Math.PI);可弹出的还是 3.1415926啊
      

  5.   

    查了些资料,自己来答吧PI 
    15.8.1.6 PI
    The number value for π, the ratio of the circumference of a circle to its diameter, which is approximately 3.1415926535897932.
    This property has the attributes { DontEnum, DontDelete, ReadOnly }. 看出来这是一个ReadOnly 的属性,说白了 Math.PI 就相当于一个 ReadOnly 的变量而已,因此可以进行++运算,但是不能对他进行赋值运算,不过 javascript 具有很强的的容错性,所以它是不会提醒你此处不能进行赋值运算的啊。好的,困扰多时的问题就此解决,晚上睡个好觉啊