JavaScript高级程序设计学习(一)
来源:互联网 发布:网络维护维护什么 编辑:程序博客网 时间:2024/05/23 14:44
1.等于与不全等的区别
1.1、等于(==):比较两个值是否相等,如果两个值类型不一致,会做强制转换;
1.2、全等(===):比较两个值是否相等,但是不会对值得类型做转换。
55 == "55" //返回true,字符串“55”会被转换成数值55; 55 === "55" //返回false,不会做类型转换;
建议:不等于、不全等情况类似。等于、不等于会涉及到数据类型转换,会破坏数据类型的完整性,建议使用全等、不全等。
2、利用逻辑或来给变量复制
给变量复制的时候,通常为避免给变量赋值为null或undefined,通常这样做
var a = b || c;
逻辑或操作有如下定义:当两个操作数都不是布尔值时,如果第一个操作数是对象,则返回第一个值,如果第一个操作数求值结果返回false,则返回第二个操作数;则返回undefined。如果b为null或者undefined时,转换成Boolean值后为false,此时输出c,如果c 也是undefined或者null,则输出对应的值。
3、js 没有代码块作用域的概念
如下代码:输出结果为10,因为js没有代码块作用域的概念,所以i 不管定义在if块里还是for块里,代码块外都能访问。
if(true){ for (var i = 0; i < 10; i++) { //doSomeThing }}alert(i) //10<span style="font-size:14px;"> </span>
4、数组比较函数sort()
数组自带的sort方法,会按升序排列数组元素大小,但是经常会出现排列结果与预想的不一致。例如
var arr = [0 ,1 ,5, 10 ,15 ]
调用sort方法之后,返回的排序结果是:0, 1, 10, 15, 5 ,显然这个与我们预期的不一致。这是因为,sort方法在排序时,会调用每个数组项的toString()方法,然后比较对应的字符串。虽然数值5在数值10前边,但是转换成字符串之后,“10”则位于“5”前边(注:如果两个字符串进行对比,则比较两个字符串对应的字符的编码值)。解决方案:sort()可以接受一个比较函数作为参数,该函数的第一个的参数如果位于第二个参数之后则返回1,相等的话返货0,小于的话返回-1。
function compare(value1,value2){ if(value1 < value2){ return -1; } else if (value1 > value2 ){ return 1; } else { return 0; }}
重新调用sort()方法:
arr.sort(compare);alert(arr) ; // 0,1,5,10,15
当然,也可以实现降序排列,只要讲compare函数中的逻辑变为相反; 对于数值型数值,也可以简单写成如下方式:
function compare(value1,value2){ return value1- value2 ; // 降序 return value2- value1 ;}
注:这里的compare函数会返回 -1, 0,1 ,确定排序策略 ,这些值传入到sort方法内部,由sort根据排序策略确定如何排序。
5,数组实现队列、栈、反队列的
判断某一个对象是不是数组常用的方法是:if(a instanceof Array) { // doSomeThing }
数组模拟队列、栈的执行过程,用到以下四种方法,其中:
队列:队列的数据结构访问顺序是先进先出(FIFO),可以类比于火车过隧道;
栈:栈的数据结构访问顺序是先进后出,或者说后进先出,可以类比于子弹夹装弹。
对应的数组有四个方法:
push:向数组尾部添加元素,并返回数组长度;
pop:从数组尾部删除元素,并减少数组长度,返回删除的元素;
shift:从数组首部删除元素,并减少数组长度,返回被删除的元素;
unshift:向数组首部添加元素,并返回最新的长度。
//利用push和pop方法,可以实现类似栈的行为:var colors = [red,blue,green];var length = colors.push("black"); //4var item = colors.pop();alert(item); //black //利用shift,push可以是模拟队列的行为:var colors = [red,blue,green];var length = colors.push("black"); //4var item = colors.shift();alert(item); //red //利用unshift,pop可以模拟相反方向的队列;var colors = [red,blue,green];var length = colors.unshfit("black"); //4var item = colors.pop();alert(item); //green
6,数组的迭代算法
迭代算法
every():对数组中的每一项运行给定函数 ,如果数组中的每一项运行结果都是true,则返回true;
some():对数组中每一项运行给定函数 ,只要有一项运行结果为true,则返回true;
filter():过滤函数,对数组中的每一项执行给定函数,返回执行true的元素,重新组成新的数组;
map();对数组中的每一项执行给定函数,返回执行结果组成的数组;
forEach();对数组中的每一项执行给定函数,么有返回值;
var arr = [1,2,3,4,6,5,8,9];var everyResult = arr.every(function(item, index ,array ){ return item > 2;}); // everyResult = falsevar someResult = arr.some(function(item, index ,array ){ return item > 2;});// everyResult = truevar filterResult = arr.filter(function(item, index ,array ){ return item > 2;});// filterResult = [3,4,6,5,8,9 ]var mapResult = arr.map(function(item, index ,array ){ return item * 2;});// mapResult = [2,4,6,8,12,10,16,18 ]arr.forEach (function(item, index ,array ){ // dosomething ,么有返回值});
注:这里应该还有jquery的each方法也是数组的常用方法。
7、js 的函数function
在js中函数其实是对象,每个函数其实是Function的实例。因此函数名可以理解为指向函数的对象。函数定义常用的有两种,
//方法一 function sum (a, b){ return a + b; } //方法二 var sum = function (a, b){ return a + b; }
两种方式定义,第一种称为函数声明,第二种称为函数表达式,二者的区别:js引擎在执行代码是,会首先读取函数声明,并将它添加到执行环境中,使其在任何地方都可以使用;而函数表达式只有在程序运行在所在的代码行时,才会被真正的运行。如下所示;
sum(10,20) function sum (a, b){ return a + b; }<span style="font-size:14px;"> </span>
可以运行,结果为30;<span style="font-size:12px;">sum(10,20); var sum = function (a, b){ return a + b; }</span>
程序会报错,这是因为在执行到函数所在的语句之前,sum不会保存任何对函数的引用,在执行第一句时会报错 “ sum is not a function”
1 0
- JavaScript高级程序设计学习笔记(一)
- JavaScript高级程序设计学习(一)
- javaScript 高级程序设计学习(一)
- 再识javaScript,学习javascript高级程序设计(一)
- 学习《JavaScript高级程序设计》学习笔记(一)
- 《JavaScript高级程序设计》学习总结之ECMAScript基础(一)
- JavaScript高级程序设计学习总结一(基本概念总结)
- Javascript高级程序设计学习笔记(一):函数
- javascript高级程序设计学习(一)-----js基础
- javascript高级程序设计学习笔记(一)
- javascript高级程序设计学习笔记一
- javascript 高级程序设计 一
- JavaScript高级程序设计 (一)
- JavaScript高级程序设计(读书笔记)(一)
- javascript高级程序设计 -- 读书笔记(一)
- javascript 高级程序设计笔记(一)
- javascript高级程序设计笔记(一)
- JavaScript高级程序设计(笔记一)
- android <activity-alias/>的用法,是否让你想起了什么
- 数据库SQL优化
- 解决LisTview 和gridView在ScrollView中显示不全和其他异常的问题
- maxcpus
- 面试问题解答记录(2016-08-23)
- JavaScript高级程序设计学习(一)
- Android——Launcher(桌面启动器)相关知识总结贴
- LCD的ESD防护
- 测试C51stc板的流水灯、数码管、按键
- JSP---EL表达式中文乱码(Tomcat服务器)解决方法
- linux c语言 select函数用法
- 计算机的启动流程
- 鼓励你大胆追梦的三个移动互联网案例
- IDEA 出现Diamond types are not supported at this language level