整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

手把手教你Javascript (4)-循环语句


第一节课的时候,我们学过:


var a=1; //声明变量
if(a%2==0){
console.log(a);
}
a=2;
if(a%2==0){
console.log(a);
}
a=3;
if(a%2==0){
console.log(a);
}
a=4;
if(a%2==0){
console.log(a);
}

。。
a=10
if(a%2==0){
console.log(a);
}

这是打印10以内的偶数。

在这个例子的下面,还有几行语句可以达到相同的效果,但是要精简很多。

for(var i=1;i<=10;i++)
{
if(i%2==0)
{
console.log(i);
}
}

这个for语句就是Javascript的循环语句。

for语句的语法是这样的:

for(初始化语句;条件语句;迭代操作)
{
//语句
}

在上面的例子中,就是:

var i=1 这是初始化语句,声明了一个i的变量,数值是1
i<=10 条件是i小于等于10
i++ 就是每次执行循环,i的值自动加1,进行迭代操作。


下面是例子1

var count;

for(count=0;count<=10;count=count+1)
{
console.log("Count的值是"+count);
}

另外,还有几种循环语句,这里也一并介绍一下

1、while语句
他的语法是:

while(条件)
{
//执行语句
}


同样是执行打印1到10的值,while是这样的(例子2):

var count=0;

while(count<=10)
{
console.log("Count的值是"+count);

count=count+1; //这个地方是必须的,否则count一直为0,就会进入死循环
}


2、do..while语句

它的语法是:

do {
//执行语句
}while(条件)


同样打印1到10的值(例子3):

var count=0;

do {
console.log("Count的值是"+count);

count=count+1; //这个地方是必须的,否则count一直为0,就会进入死循环
}while(count<=10);


最后一个例子是综合第三节的if语句,来一个稍微复杂的应用。


我们来求一下所有的“水仙花”数。

在百度百科里面,水仙花数的定义是这样的:

水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),
水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。

下面是具体的例子(例子4):

var i;
var j;
var k;

for(var i=1;i<=9;i++){
for(j=1;j<9;j++){
for(k=1;k<9;k++){
var real_number=i*100+j*10+k;
if(i*i*i+j*j*j+k*K*k==real_number){
console("发现水仙花数:"+real_number);
}
}
}

}

今天就到这里。

avaScript入门教程之循环语句

循环语句从字面意思理解就是重复执行,能够让计算机按照程序员要求重复执行某种操作的能力是所有程序设计语言所必须具备的基本能力。在JavaScript程序设计语言中同样具有循环语句,实现程序代码段的重复执行,本文主要从while语句与for语句两种循环类型方面对循环语句进行说明。


JavaScript循环语句

JavaScript为前端程序设计人员提供了三类基本循环控制语句,分别为while语句、do-while 语句与for语句。通过这三种语句程序设计人员可以控制程序重复执行某一操作或者操作的组合。JavaScript基本循环语句执行流程描述如下图所示:

JavaScript基本循环流程图

通过上图我们可知,作为循环控制语句需要提供循环执行的入口、循环体与执行大的出口三部分。其中出口至关重要,出口为结束循环的条件,如果设置不好,程序将一直重复执行,并进入死循环状态。入口我们可以理解为初始条件。出口主要通过判断条件控制,在上图中当判断条件返回值为F时,结束并退出循环。以下我们将分别介绍前文提出的三种类型循环。

do...while循环

在很多程序设计语言基础教程中一般没有把do...while放到整个循环语句最前面进行介绍,主要原因在于与while相比较使用的频率相对较低,而且过多介绍可能让初学者对两者学习记忆产生混淆。此处我们首先介绍do...while 循环,首先我们给出其工作的流程及原理说明。

do...while执行流程

do...while 循环执行过程描述如上图所示,当开始执行循环控制时,首先执行一次循环体,执行完成进行条件判断,成立继续进入循环体执行,否则结束循环。因此可知无论如何都会执行循环体一次。这也是do..while与while语句最大的区别。do...while 语法结构与应用实例如下:

语法说明及示例

基本语法与测试案例如上所示,执行完之后可以得到1-100之间奇数的和,其和为2500。chrome浏览器测试结果如下:

求和计算结果

while循环语句

理解了do...while循环结构之后,再去理解while相对容易,while语句程序执行流程描述如下图所示:

while语句执行流程

while语句执行流程与循环控制基本流程完全一致,首先判断条件,条件成立进入循环体,执行完再判断,直到条件不成立结束循环。while循环语法与示例说明如下:

语法说明及示例

for循环

for循环同样可以完成循环流程控制功能,其工作过程与原理基本与while一致,只是其语法相对其他两种较为复杂一点。需要通过三个表达式控制循环,三个表达式分别为初始值、判断表达式、增长值。for循环基本语法与应用示例如下所示:

语法说明及示例

以上针对JavaScript程序设计语言流程控制中的循环操作功能进行了分析与说明,三种控制语句异同也做了解释,并通过示例编写了简单程序进行测试。


本头条号长期关注编程资讯分享;编程课程、素材、代码分享及编程培训。如果您对以上方面有兴趣或代码错误、建议与意见,可以联系作者,共同探讨。更多程序设计相关教程及实例分享,期待大家关注与阅读!JavaScript基础教程系列教程链接如下:

JavaScript基础教程(五)流程控制之条件语句

JavaScript基础教程(四)二进制位运算

JavaScript基础教程(三)64位浮点数加法运算

JavaScript基础教程(二)变量、常量与运算符

前端开发来说,通过动画来提升交互效果是很常见的。在很早以前,做web动画主要通过javascript或者jquery或者flash这样的手段,非常麻烦,自打有了ccs3,做动画就太方便了,只需几行css代码就可以搞定。

这里我们就演示一个常见的循环滚动效果,任务是这样:先准备一个图片,平铺到页面上充满整个屏幕,然后就让画面一直向上循环滚动,形成无边无际的感觉。

虽然可以从网上搜到一些类似的代码,但是鱼龙混杂,无关紧要的代码非常多,不够纯粹。如果要弄明白动画的原理,只有自己动手做一遍才能真正消化吃透。所以我们来一步步原创这个代码,排除所有不必要的基础样式,只说要点,3个步骤你就可以完全掌握其精髓!

第一步:布局

首先,滚动的图片需要放在一个容器里,一行html代码即可完成:

第二步:把图片放进容器

css中body的边界设为0,把容器设高度100%以充满屏幕,再调用背景图pic.png

第三部:让画面动起来

咱不做标题党,循环滚动靠的就是3行css动起来的。

先是1行 -webkit-animation属性:4个参数分别表示:动画名称scroll,1秒时长,移动速度为线性的,无限循环。

然后是对应的关键帧 @-webkit-keyframes 属性,这是自己定义的动画规则,只需写2行规则即可:

原理:动画就是画从一个地方动到另一个地方。对普通滚动效果来说,有起点和终点这两个节点的位置就够了。所以我们用0%和100%分别表示起点和终点,指定2个背景图的xy位置坐标即可。图片会在规定时间内从起点移动到终点,并循环下去,数值是负表示是向上移动。320px正好是图片的高度,这样循环的时候是无缝衔接的。

好了,最终完整的代码如下,是不是很精练呢?保存成 index.html 即可

代码写完了,还要记得在当前目录要有pic.png这个图片哦,我随便画了几笔,绝无观赏性,建议自己找个好看点的图片来代替。

现在用浏览器打开index.html即可看到效果,比较魔性的地方在于,如果你盯着看久了,关闭窗口以后会出现幻觉,仿佛整个显示器都在向上飞,哈哈!

最后我们来说说浏览器兼容性问题:

大家可能注意到了,前面那2个古怪的 -webkit-animation, @-webkit-keyframes 这里的-webkit-其实是一个前缀,animation和@keyframes才是CSS的标准属性。

当加上-webkit-后,就形成了一个针对特殊浏览器的专有属性,表示用在谷歌的chrome和苹果的safari浏览器上。此外还有-moz前缀代表针对firefox浏览器的私有属性。

所以我们在用到css3的一些特性的时候,经常使用一大堆的重复性的代码,比如我们今天的这个代码,有人会写成这个样子:

一个简单的动画就要写这么多冗余的代码,为的只是支持一些旧的浏览器,有必要吗?为什么在这个例子中我们仅仅采用了-webkit-而没有使用其它专有属性呢?

因为现在已经是2019年了!谷歌苹果的浏览器是主流,占据了绝大部分,而其它小众浏览器也大多能够兼容他们,在版本上,大部分人安装浏览器是直接下载新版本安装使用,而非找出家里陈年的老软盘、老光盘去安装,家中的老电脑也早已升级不知多少回了,所以也几乎没有机会使用低版本的浏览器了!

至于微软的IE,就更别提了,IE9以前不支持动画的,只能用js或者jquery来写动画,直到IE10才支持css动画,随后IE被放弃,主推Edge,搞了几天越来越头大干脆也放弃,现在直接使用chrome内核了,所以针对ie的兼容性除非有特殊要求已经无需考虑。

你在网上能看到的范例代码,如果有写成那么复杂臃肿的,估计也都是3-5年前发的老文,或者抄来抄去不做思考的搬砖工留下的“初学者”笔记。

我们不仿测试一下几款主流浏览器的情况看看,结论:

测试结果表明,-webkit-的写法在4款不同内核的浏览器上都能正常使用,所以我们的代码因此能得以简化。

当然,这个例子也有局限性,比如你看,只有苹果safari不支持标准写法,万一将来他改邪归正了呢?毕竟标准写法才是众望所归不是?使用针对个别浏览器的私有属性写法,虽可用但毕竟有些怪怪的,将来怎么样还很难说呢。这样看来,如果使用古老的处理办法,重复N次为每个专属浏览器各写一份代码,除了辣眼睛也真没什么错。

浏览器的兼容问题涉及面实在是非常广,三言两语还真说不完,以后会专门来讲。