首页 > web前端 > js教程 > 正文

JavaScript在实际应用中需要注意的要点实例汇总

伊谢尔伦
发布: 2017-07-26 13:44:26
原创
1167人浏览过

你所创建的所有函数都是区分大小写的 

单引号('字符串')和双引号("字符串")在JavaScript中没有特殊的区别,都可以用来创建字符串.但作为一般原则,大多数WEB开发者都选择使用单引号 而不是双引号,因为XHTML规范要求所有XHTML属性值都必须使用双引号括起来.
JavaScript不支持重载,在JavaScript中,脚本在执行时不会顾及函数定义时的参数,而是直接使用在作用域链中最后定义的那个函数。这意味着,相同名称的函数永远只存在一个实例 

闭包是与作用域相关的一个概念,它指的是内部函数即使在外部函数执行完成并终止后,依然可以访问其外部函数的属性。当引用一个变量或方法时,JavaScript会沿着由对象执行路径构成使用域链对使用域进行解析,查找变量最近定义的值,一旦找到即使用该值。

function initAnchors(event){ 
  for (var i=1; i <=3; i++){ 
    var anchor = document.GetElementById('anchor' + i); 
    anchor.attachEvent('onclick', function() {  
    alert('my id is anchor' + i); 
    }); 
  } 
}
登录后复制

假设页面中有三个A元素,ID分别为anchor1到anchor3,程序为三个A元素注册onclick事件,单击第个A元素显示"my id is anchorX",但实际运行情况却不是这样,单击每个A元素都显示"my id is anchor4"。为什么会这样呢,因为i的值实际上是在单击事件发生时才从使用域链中取得的,当单击事件发生时,initAnchors()已执行完毕,此时i的值等于4。解决方法可以按如下 

function registerAnchorListner(anchor,i){ 
  anchor.attachEvent('onclick', function() {  
    alert('my id is anchor' + i); 
  }   
} 
function initAnchors(event){ 
  for (var i=1; i <=3; i++){ 
    var anchor = document.GetElementById('anchor' + i); 
    registerAnchorListner(anchor,i); 
  } 
} 
var anchor = document.GetElementById('anchor' + i); 
anchor.attachEvent('onclick', function() { 
alert('my id is anchor' + i); 

});
登录后复制

迭代对象,在编写脚本时经常使用到迭代,如下: 

立即学习Java免费学习笔记(深入)”;

GAIPPT
GAIPPT

AI PPT制作和美化神器

GAIPPT 1215
查看详情 GAIPPT
var list = [1,2,3,4]; 
for(var i = 0;i < list.length; i++){ 
  alert(list); 
}
登录后复制

另一种可供选择的迭代方法是使用for循环遍历位于(in)list中的每个属性: 

for(var i in list){ 
  alert(list); 
}
登录后复制

此时,得到的是与使用前一迭代方法相同的结果,因为list是一个Array对象。
但是,当使用for(var i in item)方法操纵类似数组而又不是数组的对象时一定要格外小心,如下 

var all=document.getElementsByTagName('*'); 
for(var i in all){ 
  //对照all元素进行某些操作 
}
登录后复制

在这次的迭代过程中,i的值会分别等于length、item和namedItem,而这很可能会导致代码中出现意外错误。在某些情况下,可以使用对象的hasOwnProperty()方法来避免这个问题。如果对象的属性或方法是非继承的,那么hasOwnProperty()方法返回true。即这里的检查不涉及从其它对象继承的属性和方法,只会检查在特定对象自身中直接创建的属性,比如分配给数组的元素。因此,在如果在for循环中使用这种检查,那么循环将会跳过length这样属性,因为length不是数组all的真系属性,而是从派生数组all的NameNodeMap对象中继承的属性 

var all=document.getElementsByTagName('*'); 
for(var i in all){ 
  if(!all.hasOwnProperty(i)) continue; 
  //对照all元素进行某些操作 
}
登录后复制


以上就是JavaScript在实际应用中需要注意的要点实例汇总的详细内容,更多请关注php中文网其它相关文章!

相关标签:
java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号