undefined 以及 is not defined

本文探讨了在使用百度地图API时遇到的加载失败问题,特别是当网络不佳时导致的数据显示异常。文中详细分析了JavaScript中变量未定义与未创建的区别,并提供了相应的解决方案。

之前编写一个用了百度地图页面中时犯了一个很低级的错误:过度依赖百度图,数据的加载显示流程必须在百度地图加载成功才能正确显示。这样导致的问题就是,如果电脑网络不好,无法加载地图,那没有用到百度地图的一些数据就无法正常显示了。于是对代码进行了修改,然后又发现了一个以前没有接触过的问题,便记录下来。
在断网的情况下,百度地图的BMap 变量出现了一个报错BMap is not defined
我一直以为如果没有声明一个变量,且使用了这个变量的值时,JS会给他一个undefined 的值才对,但事实却不是这样。
undefined意思是“不明确,未定义的”的,也就是说这个变量被创建了,但却不知道用处。
is not defined 意思是“未创建”,也就是说这个变量根本就没被创建过,这时候如果使用了这个变量,就会抛出XX is not defined 这个错误。
但是这两个typeof 的值都是“undefined”
原因是“未定义”的变量的typeof返回的就是“undefined” 而undefined的typeof也是返回“undefined”

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <meta name="keywords" content="百度地图,百度地图API,百度地图自定义工具,百度地图所见即所得工具" /> <meta name="description" content="百度地图API自定义地图,帮助用户在可视化操作下生成百度地图" /> <title>百度地图API自定义地图</title> <!--引用百度地图API--> <style type="text/css"> html,body{margin:0;padding:0;} .iw_poi_title {color:#CC5522;font-size:14px;font-weight:bold;overflow:hidden;padding-right:13px;white-space:nowrap} .iw_poi_content {font:12px arial,sans-serif;overflow:visible;padding-top:4px;white-space:-moz-pre-wrap;word-wrap:break-word} </style> [removed][removed] </head> <body> <!--百度地图容器--> <div solid 1px;margin:auto auto;" id="dituContent"></div> </body> [removed] //创建和初始化地图函数: function initMap(){ createMap();//创建地图 setMapEvent();//设置地图事件 addMapControl();//向地图添加控件 } //创建地图函数: function createMap(){ var map = new BMap.Map("dituContent");//在百度地图容器中创建一个地图 var point = new BMap.Point(116.395645,39.929986);//定义一个中心点坐标 map.centerAndZoom(point,12);//设定地图的中心点和坐标并将地图显示在地图容器中 window.map = map;//将map变量存储在全局 } //地图事件设置函数: function setMapEvent(){ map.enableDragging();//启用地图拖拽事件,默认启用(可不写) map.enableScrollWheelZoom();//启用地图滚轮放大缩小 map.enableDoubleClickZoom();//启用鼠标双击放大,默认启用(可不写) map.enableKeyboard();//启用键盘上下左右键移动地图 } //地图控件添加函数: function addMapControl(){ //向地图中添加缩放控件 var ctrl_nav = new BMap.NavigationControl({anchor:BMAP_ANCHOR_TOP_LEFT,type:BMAP_NAVIGATION_CONTROL_LARGE}); map.addControl(ctrl_nav); //向地图中添加缩略图控件 var ctrl_ove = new BMap.OverviewMapControl({anchor:BMAP_ANCHOR_BOTTOM_RIGHT,isOpen:1}); map.addControl(ctrl_ove); //向地图中添加比例尺控件 var ctrl_sca = new BMap.ScaleControl({anchor:BMAP_ANCHOR_BOTTOM_LEFT}); map.addControl(ctrl_sca); } initMap();//创建和初始化地图 [removed] </html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值