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 相关文章推荐
dwr spring的集成实现代码
Mar 22 Javascript
分享一道笔试题[有n个直线最多可以把一个平面分成多少个部分]
Oct 12 Javascript
js报$ is not a function 的问题的解决方法
Jan 20 Javascript
jQuery中parents()和parent()的区别分析
Oct 28 Javascript
教你使用javascript简单写一个页面模板引擎
May 05 Javascript
jQuery延迟执行的实现方法
Dec 21 Javascript
js实现悬浮窗效果(支持拖动)
Mar 09 Javascript
es6的数字处理的方法(5个)
Mar 16 Javascript
分享十三个最佳JavaScript数据网格库
Apr 07 Javascript
vue插件开发之使用pdf.js实现手机端在线预览pdf文档的方法
Jul 12 Javascript
微信小程序自定义tabbar custom-tab-bar 6s出不来解决方案(cover-view不兼容)
Nov 01 Javascript
详解javascript void(0)
Jul 13 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
JAVA/JSP学习系列之七
2006/10/09 PHP
php set_time_limit()函数的使用详解
2013/06/05 PHP
php去除换行(回车换行)的三种方法
2014/03/26 PHP
THINKPHP5分页数据对象处理过程解析
2020/10/28 PHP
javascript 常用代码技巧大收集
2009/02/25 Javascript
仿微博字符限制效果实现代码
2012/04/20 Javascript
网页运行时提示对象不支持abigimage属性或方法
2014/08/10 Javascript
深入探寻javascript定时器
2015/01/02 Javascript
jquery加载图片时以淡入方式显示的方法
2015/01/14 Javascript
Vue.js每天必学之过滤器与自定义过滤器
2016/09/07 Javascript
JavaScript实现使用Canvas绘制图形的基本教程
2016/10/27 Javascript
JavaScript中object和Object的区别(详解)
2017/02/27 Javascript
JavaScript 中调用 Kotlin 方法实例详解
2017/06/09 Javascript
JS扩展String.prototype.format字符串拼接的功能
2018/03/09 Javascript
Vue实现美团app的影院推荐选座功能【推荐】
2018/08/29 Javascript
vue 优化CDN加速的方法示例
2018/09/19 Javascript
JavaScript封闭函数及常用内置对象示例
2019/05/13 Javascript
利用d3.js实现蜂巢图表带动画效果
2019/09/03 Javascript
Vue之Mixins(混入)的使用方法
2019/09/24 Javascript
js实现滑动滑块验证登录
2020/07/24 Javascript
js闭包的9个使用场景
2020/12/29 Javascript
pip 错误unused-command-line-argument-hard-error-in-future解决办法
2014/06/01 Python
python实现定时播放mp3
2015/03/29 Python
搞笑的程序猿:看看你是哪种Python程序员
2015/06/12 Python
Python爬虫爬取新浪微博内容示例【基于代理IP】
2018/08/03 Python
Python实现KNN(K-近邻)算法的示例代码
2019/03/05 Python
Python Django切换MySQL数据库实例详解
2019/07/16 Python
Django项目uwsgi+Nginx保姆级部署教程实现
2020/04/19 Python
python如何操作mysql
2020/08/17 Python
时尚、社区、科技:SEVENSTORE
2019/04/26 全球购物
监理资料员岗位职责
2014/01/03 职场文书
县优秀教师事迹材料
2014/01/31 职场文书
弘扬焦裕禄精神走群众路线思想汇报
2014/09/12 职场文书
2016计划生育先进个人事迹材料
2016/02/29 职场文书
MySQL 8.0 Online DDL快速加列的相关总结
2021/06/02 MySQL
Win11 Build 22000.829更新补丁KB5015882发布(附更新修复内容汇总)
2022/07/15 数码科技