javascript学习(二)javascript常见问题总结


Posted in Javascript onJanuary 02, 2013

1、JS中方法和变量都是区分大小写的

2、单引号、双引号在JS中没有特殊的区别,都可以用来创建字符串。但作为一般性规则,大多数开发人员喜欢用单引号而不是双引号,但是XHTML规范要求所有属性值都必须使用双引号括起来。这样在JS中使用单引号,而对XHTML使用双引号会使混合两者代码更方便也更清晰。
单引号可以包含双引号,同理,双引号也可以包含单引号。

3、括号
首先需要说明的是:JS中括号包含两种语义,可以是分隔符也可以是表达式。
a、分隔符大家非常熟悉(1+3)*3等于12
b、(function(){})();function之前的一对括号作为分隔符,后面的括号表示立即执行这个方法。

4、函数调用和引用
因为括号代表执行,所以:
var foo=example(); foo表示函数的返回值
var foo1=example; 将函数引用赋给一个值foo1

5、重载
JS不支持重载,因此这里所说有重载其实更类似于替换
JS不区别参数个数

6、作用域、闭包
作用域指对某一属性或方法具有访问权限的代码空间。如:

function myFunction(){ 
var temp="abc"; 
}

上面的temp在函数外面无法访问。
闭包是与作用域相关的一个概念,它指的是内部函数即便在外部函数执行完成并终止后仍然可以其外部函数的属性。

下面我们就作用域和闭包来举个例子
我们建立如下html页面:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<title>无标题文档</title> 
<script language="javascript" type="text/javascript"> 
function init(){ 
for(var i=1;i<=3;i++){ 
author=document.getElementById("author"+i); 
author.onclick=function(){ 
alert("author"+i); 
} 
} 
} 
window.onload=init; 
</script> 
</head> 
<body> 
<a id="author1" href="#">abc</a><br /> 
<a id="author2" href="#">abc</a><br /> 
<a id="author3" href="#">abc</a><br /> 
</body> 
</html>

运行结果:
pic
可以看到,这并不是我们想要的。
进行修改后,关键代码如下:
<script language="javascript" type="text/javascript"> 
function init(){ 
for(var i=1;i<=3;i++){ 
author=document.getElementById("author"+i); 
registerListener(author,i); 
} 
} function registerListener(author,i){ 
author.onclick=function(){ 
alert("author"+i); 
} 
} 
window.onload=init; 
</script>

这样,我们就得到了我们想要的结果。
这是因为init每次调用都产生function的一个实例,每个实例里都维护了一个新的i
而对于匿名函数的上一级已经有这个i,而且已经和init里的i不一样了。
Javascript 相关文章推荐
Javascript实例教程(19) 使用HoTMetal(6)
Dec 23 Javascript
Javascript中eval函数的使用方法与示例
Apr 09 Javascript
Jquery 获取表单text,areatext,radio,checkbox,select值的代码
Nov 12 Javascript
javascript用户注册提示效果的简单实例
Aug 17 Javascript
html5的自定义data-*属性和jquery的data()方法的使用示例
Aug 21 Javascript
jquery使用jquery.zclip插件复制对象的实例教程
Dec 04 Javascript
详解js前端代码异常监控
Jan 11 Javascript
ExtJs的Ext.Ajax.request实现waitMsg等待提示效果
Jun 14 Javascript
微信小程序input框中加入小图标的实现方法
Jun 19 Javascript
一文读懂ES7中的javascript修饰器
May 06 Javascript
微信小程序引入VANT组件的方法步骤
Sep 19 Javascript
vue中父子组件的参数传递和应用示例
Jan 04 Vue.js
javascript学习(一)构建自己的JS库
Jan 02 #Javascript
jQuery常见开发技巧详细整理
Jan 02 #Javascript
js显示时间 js显示最后修改时间
Jan 02 #Javascript
通过JS自动隐藏手机浏览器的地址栏实现原理与代码
Jan 02 #Javascript
js 回车提交表单两种实现方法
Dec 31 #Javascript
event.currentTarget与event.target的区别介绍
Dec 31 #Javascript
jQuery $.data()方法使用注意细节
Dec 31 #Javascript
You might like
PHP 文件扩展名 获取函数
2009/06/03 PHP
PHP 全角转半角实现代码
2010/05/16 PHP
PHP数据集构建JSON格式及新数组的方法
2012/11/07 PHP
javascript之锁定表格栏位
2007/06/29 Javascript
网站页面自动跳转实现方法PHP、JSP(上)
2010/08/01 Javascript
Jquery知识点三 jquery表单对象操作
2011/01/17 Javascript
再次分享18个非常棒的jQuery表格插件
2011/04/10 Javascript
JQuery扩展插件Validate 5添加自定义验证方法
2011/09/05 Javascript
怎么限制input的text里输入的值只能是数字(正则、js)
2016/05/16 Javascript
深入理解事件冒泡(Bubble)和事件捕捉(capture)
2016/05/28 Javascript
jQuery fadeOut 异步实例代码详解
2016/08/18 Javascript
详解在vue-cli中使用路由
2017/09/25 Javascript
解决LayUI表单获取不到data的问题
2018/08/20 Javascript
PHP 502bad gateway原因及解决方案
2020/11/13 Javascript
python操作mongodb根据_id查询数据的实现方法
2015/05/20 Python
python去除扩展名的实例讲解
2018/04/23 Python
用python统计代码行的示例(包括空行和注释)
2018/07/24 Python
python抓取网页内容并进行语音播报的方法
2018/12/24 Python
Python高级编程之继承问题详解(super与mro)
2019/11/19 Python
PyTorch中Tensor的数据统计示例
2020/02/17 Python
python实现查找所有程序的安装信息
2020/02/18 Python
Python基于codecs模块实现文件读写案例解析
2020/05/11 Python
Python DES加密实现原理及实例解析
2020/07/17 Python
HTML5 transform三维立方体实现360无死角三维旋转效果
2014/08/22 HTML / CSS
世界最大的海报和艺术印刷商店:AllPosters.com
2017/02/01 全球购物
在Java开发中如何选择使用哪种集合类
2016/08/09 面试题
公司法定代表人授权委托书
2014/09/29 职场文书
党的群众路线教育实践活动剖析材料
2014/09/30 职场文书
2014年党建工作汇报材料
2014/10/27 职场文书
2014年党风廉政工作总结
2014/12/03 职场文书
护士个人总结范文
2015/02/13 职场文书
入党群众意见范文
2015/06/02 职场文书
安全教育培训心得体会
2016/01/15 职场文书
CSS预处理框架——Stylus
2021/04/21 HTML / CSS
SQL Server 忘记密码以及重新添加新账号
2022/04/26 SQL Server
前端与RabbitMQ实时消息推送未读消息小红点实现示例
2022/07/23 Java/Android