文档章节

javascript学习(一)

syajin
 syajin
发布于 2015/03/28 19:38
字数 2006
阅读 6
收藏 0
点赞 0
评论 0
/*label和break、continue的运用。
*label作为标签与break和continue一起使用,
*循环中break后面跟上label标签时,会break到label标记的位置,continue同理
*/
var num=0;
start:
for(var i=1;i<5;i++){
	for(var j=1;j<5;j++){
		for(var k=1;k<5;k++){
			
			if(k===2){
//				break start;    //num为1
//				break;			//num为16
//				continue;		//num为48
				continue start;	//num为4
			}
			num++;				
		}
	}
}
console.log(num);

/**
 * 函数参数
 * 定义函数时,我们可以定义2个参数,但实际使用时,
 * 我们可以不传参数或者传入两个以上的参数进去,而且不会报错.
 * 这是因为,在函数体内,参数是以一个数组(arguments)的形式表示的。
 * 因此,我们也可以直接在函数体内使用arguments访问参数
 */
function numberOfArguments(){
	console.log(arguments.length);
}
numberOfArguments(1,2);		//输出2
numberOfArguments();		//输出0

/**
 * 函数参数传递
 * 无论是基本类型还是引用类型,函数参数的传递都是按照值来传递的,而不是引用。
 */
function changeNum(num1){
	num1=10;
}
function changNumOfObject(ob1){
	ob1.num=10;
}
var num=5;
var ob=new Object();
changeNum(num);
changNumOfObject(ob);
console.log(num);			//输出5
console.log(ob.num);		//输出10
/**
 * 上面的程序num输出5,而不是10,因为参数值传递时,将num的值赋值给了num1,
 * num1和num为两个独立的变量,num1的改变不会影响到num。
 * 而ob.num输出10也同样可以理解,ob赋值给了ob1,但是因为ob是引用类型,
 * 本身储存的是一个指针,赋值后,ob和ob1的值是相互独立的,但是它们按引用来访问的对象是同一个,
 * 所以函数内,ob1添加了num属性。函数外ob可以访问到num属性。
 */


/**
 * Array数组
 * 在javascript中构造数组有两种方法,如下:
 */
var array1=new Array();		//通过Array的构造函数进行构造
var array2=[1,2];			//通过数组字面量进行构造
/**
 * 数组的length属性是可以动态修改的,比如一下代码是没有错误的:
 */
console.log(array1.length);		//输出0
array1[array1.length]=1;
console.log(array1.length);		//输出1
array1.length=3;
console.log(array1.length);		//输出3
console.log(array1[2]);			//输出undefined,因为虽然声明了但是未初始化
/**
 * 检测一个变量是否为数组时,我们可以用instanceof进行检测
 * ,但是这个操作符只适合于只有一个全局作用域的情况。
 * 如果有多个全局作用域(当我们引用了多个框架并且相互传递参数时),这个操作符便适用了,
 * 为此,ECMAScript为我们提供了Array.isArray()方法。不管有多少个全局执行环境,
 * 这个方法都可以为我们判断变量是否是数组。
 */
console.log(array1 instanceof Array);		//返回true
console.log(Array.isArray(array1));			//返回true
/**
 * 数组调用valueOf()方法返回的是数组本身
 * 数组调用toString()方法返回的是数组每一项的toString结果拼接起来的并以逗号相隔的字符串
 * 数组调用join()方法可以指定分隔字符串的分隔符,该方法只接受一个参数(指定分隔符)
 * 如果数组中有数组项为undefined,则调用上述方法时,该项值为空字符串
 */
console.log(array2.valueOf());				//返回[1,2]
console.log(array2.toString());				//返回1,2
console.log(array2.join(':'));				//返回1:2
console.log(array1.valueOf());				//返回[1, , ]
/**
 * 数组的栈方法
 * 使用push()和pop()方法模拟栈的数据操作
 * push()会在数组尾部添加传入的参数并返回修改后数组长度,
 * pop()会删除数组最后一个元素并返回被删除的元素。
 */
var count1=array2.push(4);
console.log(count1);			//返回3
console.log(array2);		//返回[1,2,4]
var item=array2.pop();		
console.log(item);			//返回4
console.log(array2);		//返回[1,2]
/**
 * 数组的队列方法(一)
 * 使用shift()方法和push()模拟队列
 * shift()方法会删除数组的第一个元素并返回这个元素
 */
var count2=array2.push(3);
console.log(array2);		//返回[1,2,3]
var item2=array2.shift();
console.log(item2);			//返回1
console.log(array2);		//返回[2,3]
/**
 * 数组的队列方法(二)
 * 使用unshift()和pop()模拟反方向的队列
 * unshift()会将传入的参数逐一添加到数组的最前面并返回修改后的数组长度
 */
var count3=array2.unshift(0);
console.log(count3);		//返回3
console.log(array2);		//返回[0,2,3]
/**
 * 数组排序
 * reverse(),将数组倒序排列
 * sort(),无参数时,将数组按升序排序,排序过程中会每项都会调用toString方法,
 * 比较toString方法的返回结果进行升序排序。
 * 这种方式得出的排序结果常常不是我们需要的,
 * 所以为了得到期望的排序我们可以传入一个比较函数。
 * 比较函数接收两个参数,如果希望第一个参数位于第二个参数前面则返回负数,
 * 如果希望第一个参数位于第二个参数后面则返回正数,如果两个参数相等则返回0。
 */
function sortNum(num1,num2){
	if(num1<num2){
		return -1;
	}
	else if(num1>num2){
		return 1;
	}
	else{
		return 0;
	}
}
var array3=[1,20,3,4];
array3.reverse();
console.log(array3);			//返回[4,3,20,1]
array3.sort();
console.log(array3);			//返回[1,20,3,4],因为是根据toString的结果排序的
array3.sort(sortNum);			//返回[1,3,4,20]
console.log(array3);
/**
 * 数组的操作方法
 * concat()基于当前数组与传入的参数(可以是数组也可以是非数组)进行拼接构建并返回新数组。
 * slice()基于当前数组根据接收的参数进行裁剪构建并返回新数组,接收一个或两个参数,作为起始项和结束项。
 * splice()基于当前数组进行任何位置的插入删除替换操作,接收两个或两个以上的参数,
 * 第一个参数为起始项,第二个为删除项数,第三个及之后的为替换项的值。始终返回一个数组,
 * 该数组包含被删除的项值(如果没有删除则为空)。
 * 需要注意的是,这concat和slice不会对原数组的值有影响,而splice则会影响原数组
 */
var array4=[1,2,3,4];
console.log(array4.concat([5,6],7));		//返回[1,2,3,4,5,6,7]
console.log(array4.slice(1));				//返回[2,3,4],只有一个参数时默认从起始项开始直至数组末尾(包括最后一项)
console.log(array4.slice(1,3));				//返回[2,3],不包括结束项
var rm=array4.splice(0,1);
console.log(array4);						//返回[2,3,4]
console.log(rm);							//返回[1]
rm=array4.splice(0,0,0);		
console.log(array4);						//返回[0,2,3,4]
console.log(rm);							//返回[]
rm=array4.splice(0,1,1,2);
console.log(array4);						//返回[1,2,2,3,4]
console.log(rm);							//返回[0]
/**
 * 数组的位置方法
 * indexOf(),接收一个或两个参数,作为查找项值和查找起始位置,从数组开头向末尾查找
 * lastIndexOf(),与indexOf查找方向相反
 */
var array5=[1,2,3,2,4,5];
console.log(array5.indexOf(2));				//返回1 
console.log(array5.indexOf(2,2));			//返回3
console.log(array5.lastIndexOf(2));			//返回3
console.log(array5.lastIndexOf(2,2));		//返回1
/**
 * 数组的迭代方法
 * every(),每个数组项运行指定函数,如果每次函数都返回true,则方法返回true。
 * some(),每个数组项运行指定函数,任意一次函数结果返回true,则该方法返回true。
 * filter(),每个数组项运行指定函数,函数返回true的项组成数组并被返回。
 * map(),每个数组项运行指定函数,所有结果组成数组并被返回。
 * forEach(),每个数组项运行指定函数,该方法无返回值。
 * 这些操作对原数组值无影响
 */
function someFunction(item,index,array){
	return item>3;
}
function otherFunction(item,index,array){
	console.log(item);
}
console.log(array5.every(someFunction));			//返回false
console.log(array5.some(someFunction));			//返回true
console.log(array5.filter(someFunction));		//返回[4,5]
console.log(array5.map(someFunction));			//返回[false,false,false,false,true,true]
array5.forEach(otherFunction);					//执行次语句时,控制台会依次打印1,2,3,2,4,5
/**
 * 数组的归并方法
 * reduce(),接收一个或两个参数,第一个为迭代时调用的函数,第二个为归并的初始值。
 * 迭代函数接收4个参数,分别作为前一项值,当前项值,当前索引,数组对象。
 * reduceRight(),用法同上,但迭代方向相反,reduceRight从数组末尾向开头遍历。
 */
function subtract(prev,cur,index,array){
	return cur-prev;
}
var array6=[1,2,3];
console.log(array6.reduce(subtract));				//返回2
console.log(array6.reduce(subtract,8));				//返回-6
console.log(array6.reduceRight(subtract));			//返回2
console.log(array6.reduceRight(subtract,8));		//返回-6


© 著作权归作者所有

共有 人打赏支持
syajin
粉丝 2
博文 7
码字总数 4858
作品 0
广州
前端学习之路(从入门到入坑...)

学习前端两年多了,拿了阿里巴巴实现offer,想结合个人经历总结的前端入门方法,总结从零基础到具备前端基本技能的道路、学习方法、资料。由于能力有限,不能保证面面俱到,只是作为入门参考...

阿小庆 ⋅ 06/14 ⋅ 0

WEB前端学习JS灵魂之问:JS为什么是单线程的?

Web前端开发工程师是一个很新的职业,是从事Web前端开发工作的工程师。主要进行网站开发,优化,完善的工作。网页制作是Web 1.0时代的产物,那时网站的主要内容都是静态的,用户使用网站的行...

web前端小辰 ⋅ 05/27 ⋅ 0

安利一个好玩的JS编程游戏—warriorjs

今天在Chrome的掘金插件上出现了一个好玩的项目—warriorjs。它的简介是这么写的: 官网&文档:https://warrior.js.org/ 安装十分简单,通过 npm 就行(前端的同学们一定会~) 剩下的只要写逻...

⋅ 05/18 ⋅ 0

JavaScript零基础入门——(八)JavaScript的数组

JavaScript零基础入门——(八)JavaScript的数组 欢迎大家回到我们的JavaScript零基础入门,上一节课我们讲了有关JavaScript正则表达式的相关知识点,便于大家更好的对字符串进行处理。这一...

JandenMa ⋅ 昨天 ⋅ 0

四月前端知识集锦(每月不可错过的文章集锦)

目前自己组建的一个团队正在写一份面试图谱,将会在七月中旬开源。内容十分丰富,第一版会开源前端方面知识和程序员必备知识,后期会逐步写入后端方面知识。因为工程所涉及内容太多(目前已经...

夕阳 ⋅ 05/02 ⋅ 0

学java还是javascript好?哪个更有前途?

  对于哪种语言好这种问题,其实并没有固定的答案,最重要的还是 兴趣!兴趣!兴趣!重要的事情说三遍。无论做什么开发,永远要以兴趣来驱动自己学习。 先大致的说一下,Java学习是一个需要...

W3Cschool小编 ⋅ 04/23 ⋅ 0

网易音乐前端实习程序员面试的10个问题,你会几个?

近日,w3cschool app开发者头条上分享了网易音乐前端实习程序员面经,引来了不少程序员粉丝们的围观。 在分享网易音乐前端实习面试问题之前,w3cschool先跟小伙伴们分享前端学习干货: 0、h...

W3Cschool ⋅ 04/17 ⋅ 0

用于学习编程和 AI 的教学游戏 - WarriorJS

WarriorJS 是一个采用 JavaScript 开发的教学类游戏,用于学习 JavaScript 编程和人工智能。 简单地说,WarriorJS 是一个需要靠编写 JS 来玩的小游戏,启动后你需要不断攀爬 JS 世界,最终爬...

匿名 ⋅ 2015/05/26 ⋅ 0

给Web前端初学者的一些建议和学习方法路线

Web前端开发工程师是一个很新的职业,是从事Web前端开发工作的工程师。主要进行网站开发,优化,完善的工作。网页制作是Web 1.0时代的产物,那时网站的主要内容都是静态的,用户使用网站的行...

web前端小辰 ⋅ 05/24 ⋅ 0

学习Javascript的8张思维导图

分别归类为:  javascript变量  javascript运算符  javascript数组  javascript流程语句  javascript字符串函数  javascript函数基础  javascript基础DOM操作  javascript正则表达式...

thinkyoung ⋅ 2014/09/23 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring Boot整合模板引擎thymeleaf

项目结构 引入依赖pom.xml <!-- 引入 thymeleaf 模板依赖 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId......

yysue ⋅ 20分钟前 ⋅ 0

ConstraintLayout使用解析

AndroidStudio3.0创建Project默认的布局就是ConstraintLayout。 AndroidStudio3.0前的可以自己修改,使用ConstraintLayout。 为了要使用ConstraintLayout,我们需要在app/build.gradle文件中...

_OUTMAN_ ⋅ 31分钟前 ⋅ 0

OSChina 周三乱弹 —— 这样的女人私生活太混乱了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ 胖达panda :你经历过体验到人生的大起大落吗?我一朋友在10秒内体验了,哈哈。@小小编辑 请点一首《almost lover》送给他。 《almost love...

小小编辑 ⋅ 今天 ⋅ 9

自己动手写一个单链表

文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号:好好学java,获取优质学习资源。 一、概述 单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对...

公众号_好好学java ⋅ 今天 ⋅ 0

Centos7重置Mysql 8.0.1 root 密码

问题产生背景: 安装完 最新版的 mysql8.0.1后忘记了密码,向重置root密码;找了网上好多资料都不尽相同,根据自己的问题总结如下: 第一步:修改配置文件免密码登录mysql vim /etc/my.cnf 1...

豆花饭烧土豆 ⋅ 今天 ⋅ 0

熊掌号收录比例对于网站原创数据排名的影响[图]

从去年下半年开始,我在写博客了,因为我觉得业余写写博客也还是很不错的,但是从2017年下半年开始,百度已经推出了原创保护功能和熊掌号平台,为此,我也提交了不少以前的老数据,而这些历史...

原创小博客 ⋅ 今天 ⋅ 0

LVM讲解、磁盘故障小案例

LVM LVM就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。 1.新建分区,更改类型为8e 即L...

蛋黄Yolks ⋅ 今天 ⋅ 0

Hadoop Yarn调度器的选择和使用

一、引言 Yarn在Hadoop的生态系统中担任了资源管理和任务调度的角色。在讨论其构造器之前先简单了解一下Yarn的架构。 上图是Yarn的基本架构,其中ResourceManager是整个架构的核心组件,它负...

p柯西 ⋅ 今天 ⋅ 0

uWSGI + Django @ Ubuntu

创建 Django App Project 创建后, 可以看到路径下有一个wsgi.py的问题 uWSGI运行 直接命令行运行 利用如下命令, 可直接访问 uwsgi --http :8080 --wsgi-file dj/wsgi.py 配置文件 & 运行 [u...

袁祾 ⋅ 今天 ⋅ 0

JVM堆的理解

在JVM中,我们经常提到的就是堆了,堆确实很重要,其实,除了堆之外,还有几个重要的模块,看下图: 大 多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常...

不羁之后 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部