跟着纪老师的安排走,我们已经初学了HTML和CSS,现在正在学JavaScript,预计三周时间,在学习过程中也遇到了一些问题,和大家一一分享~~
问题一、根据下面代码说明:undefined是如何分配空间的?
<!DOCTYPE html> <html> <body> <p>添加具有高索引的元素可以在数组中创建未定义的“孔”。</p> <p id="demo"></p> <script> var fruits, text, fLen, i; fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits[6] = "Lemon"; fLen = fruits.length; text = ""; for (i = 0; i < fLen; i++) { text += fruits[i] + "<br>"; } document.getElementById("demo").innerHTML = text; </script> </body> </html>
运行结果为:
undefined 这个变量从根本上就没有定义,而且它的原始类型是undefined,它显示在界面上只是占位的,当试图访问一个不存在的对象属性或数组项时,就会返回一个undefined值,所以索引为5和6指向的元素是不会分配内存的。
JavaScript语言是弱类型的语言,数组内存空间是不连续的,数组加元素的时候可以自动扩容。
问题二:为什么创建出来的时间和预想的时间不同?
使用 new Date(milliseconds),创建一个零时(January 1, 1970, 00:00:00 Universal Time)加毫秒的新日期对象,代码如下:
<!DOCTYPE html> <html> <body> <p id="demo"></p> <script> var d = new Date(0); document.getElementById("demo").innerHTML = d; </script> </body> </html>
显示结果:
是因为电脑上设置的时区不同,显示的时间也不同,当把时间区域设置成为夏威夷时显示结果为:
在这里又引发出来一个问题,为什么new Date(0)显示的日期是1970年1月1日,1970有什么特殊的含义吗?
链接: 1970年1月1日那天,发生了什么?最伟大的变化是电脑的CPU和配合的计算机操作系统由32位向64的转变。
总结
不断的遇见问题,不断的去解决问题。认真对待问题,以后再次遇到该问题时它已不再是坑而是垫脚石。