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 模拟用户单击事件
Dec 31 Javascript
js中定义一个变量并判断其是否为空的方法
May 13 Javascript
JQuery遍历json数组的3种方法
Nov 08 Javascript
JQuery选择器绑定事件及修改内容的方法
Jan 23 Javascript
jQuery实现单击弹出Div层窗口效果(可关闭可拖动)
Sep 19 Javascript
js实现的鼠标滚轮滚动切换页面效果(类似360默认页面滚动切换效果)
Jan 27 Javascript
BootStrap轮播HTML代码(推荐)
Dec 10 Javascript
scroll事件实现监控滚动条并分页显示(zepto.js)
Dec 18 Javascript
Node.js使用MySQL连接池的方法实例
Feb 11 Javascript
手挽手带你学React之React-router4.x的使用
Feb 14 Javascript
24行JavaScript代码实现Redux的方法实例
Nov 17 Javascript
LayUI+Shiro实现动态菜单并记住菜单收展的示例
May 06 Javascript
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文件读写操作之文件读取方法详解
2011/01/13 PHP
php上传图片之时间戳命名(保存路径)
2014/08/15 PHP
PHP获取POST数据的几种方法汇总
2015/03/03 PHP
PHP中的常见魔术方法功能作用及用法实例
2015/07/01 PHP
实例简介PHP的一些高级面向对象编程的特性
2015/11/27 PHP
PHP获取用户客户端真实IP的解决方案
2016/10/10 PHP
Laravel框架路由设置与使用示例
2018/06/12 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
HTML-CSS群中单选引发的“事件”
2007/03/05 Javascript
jQuery中校验时间格式的正则表达式小结
2013/09/22 Javascript
解析offsetHeight,clientHeight,scrollHeight之间的区别
2013/11/20 Javascript
jQuery操作元素css样式的三种方法
2014/06/04 Javascript
一个css与js结合的下拉菜单支持主流浏览器
2014/10/08 Javascript
由ReactJS的Hello world说开来
2015/07/02 Javascript
简介alert()与console.log()的不同
2015/08/26 Javascript
解决jquery无法找到其他父级子集问题的方法
2016/05/10 Javascript
IOS中safari下的select下拉菜单文字过长不换行的解决方法
2016/09/26 Javascript
Vue.js教程之计算属性
2016/11/11 Javascript
jQuery焦点图左右转换效果
2016/12/12 Javascript
vue 中filter的多种用法
2018/04/26 Javascript
怎样使你的 JavaScript 代码简单易读(推荐)
2019/04/16 Javascript
Vue3.0 响应式系统源码逐行分析讲解
2019/10/14 Javascript
vue之封装多个组件调用同一接口的案例
2020/08/11 Javascript
深入理解python中函数传递参数是值传递还是引用传递
2017/11/07 Python
Python生成任意范围任意精度的随机数方法
2018/04/09 Python
Laravel+Dingo/Api 自定义响应的实现
2019/02/17 Python
浅谈keras中的目标函数和优化函数MSE用法
2020/06/10 Python
HTML5 FileReader对象的具体使用方法
2020/05/22 HTML / CSS
Halston Heritage官网:简洁的日装,稍显奢华的晚装
2018/11/20 全球购物
植村秀美国官网:Shu Uemura美国
2019/03/19 全球购物
大学生个人自荐信
2014/02/24 职场文书
勾股定理课后反思
2014/04/26 职场文书
2015年计生协会工作总结
2015/04/24 职场文书
刑事上诉状(无罪)
2015/05/23 职场文书
基于python制作简易版学生信息管理系统
2021/04/20 Python
node快速搭建后台的实现步骤
2022/02/18 NodeJs