2017-03-05 JS 学习笔记

for 循环

格式:

for(语句1 ; 语句2; 语句3){
            被执行的代码块
}

语句1:最先执行,而且永远只执行一次
语句2:执行完语句1,就执行语句2,当语句2条件为 true 时,执行循环体中的代码,执行完循环体中的代码后执行语句3
语句3执行完之后,那么会再次执行语句2

  • 执行顺序
    1.先执行变量 var i = 0;(并且只执行一次)
    2.然后执行 判断条件
    3.当条件成立,执行循环体中的语句
    4.执行完循环体中的语句,执行++
    5.执行完++,开始循环:2、3、4、2、3、4......直到件为false时候跳出循环
    方式1
for(var i = 0; i < 5; i ++){
            console.log(i);
}

方式2:

var i = 25;
for(; i  > 9; i--){
            console.log(i);
}

break 和 continue

break 和 continue 只出现在循环体或者 switch 中
break:遇到 break 立即跳出循环体,结束循环
continue:遇到 continue 跳出本次循环继续下次循环

打印1~100 的整数,排除能被3整出的数

for (var i = 0 ; i <= 100; i++){
      if(i % 3 == 0){
              continue;  
      }
      console.log(i);
}

函数

  • 什么是函数
    函数是具有特定功能的代码块
  • 语法:
    函数名称:遵循标识符命名规范
function 函数名称(){
            这里是要执行的代码
}

注意点:
函数想要被执行,必须要手动调用

  • 函数如何来调用:
    函数名称();
    其中()表示立即执行
  • 补充:如果将函数直接用变量接收,那么函数名可以不写,调用时直接使用 变量名();来调用

函数的几种类型

  • 返回值:什么是返回值
    当函数执行完毕的时候,如果向得到一个结果那么用 return 返回,用 return 返回的值就是函数的返回值。

无参无返回值

function printRose(){
        console.log(" @");
        console.log("\\|/");
        console.log(" |");
}

有参无返回值

 function printRose(number)
     {
             for(var i=0; i < number; i++){
           console.log(" @");
           console.log("\\|/");
           console.log(" |");
           }
     }

有参有返回值

 function sum(a,b)
    {
        return a + b;
    }
    var result = sum(12,4) + 10;
    console.log(result);

无参数有返回值

 function test() {
        return "123";
    }
    var result2 = test();
    console.log(result2);

企业开发中,一般没有返回值的函数较多,因为编程主要的是注重过程

递归函数

什么是递归函数:
定义:就是自己调用自己
注意点:
1.递归函数有性能问题,开发中几乎不用
2.递归函数必须有结束条件,不然就会进入死循环

变量的作用域

  • 变量分为两种
  • 局部变量(也叫内部变量)
    定义
    就是声明周期在函数内部的变量或者函数的参数
    作用域
    只有在函数内部能使用
    生命周期:
    从定义的那一行开始,当函数执行完毕的时候死去。函数遇到 } 执行结束
  • 全局变量
    定义
    声明在函数外面的变量
    作用域
    可以在整个 JS 文件中使用
    声明周期
    只有当当前的网页关闭才能释放
    注意点
    开发中全局变量尽量避免使用,耗内存

函数的提升

  • 第一种提升
    在函数内部或外部,如果把一个值赋值给未声明的变量,那么这个变量会被提升为全局变量
  • 第二种提升
var num = 10;
function test(){
        console.log(num);
        num = "20"
}
test();
console.log(num);的打印结果为undefinded
这么写相当于
var num = 10;
function test(){
        var num;
        console.log(num);
        num = 20;
}
test()

dom 与 对象

  • 什么是 dom
    当浏览器被加载时,浏览器会创建
    dom 对象模型,被称为dom,比喻成一棵长满标签的树
  • 什么是对象
    内部封装了很多功能的功能组

JS 控制样式

  • 样式
// 1.拿到box这个标签
var dom = document.getElementById("box");
// 2.修改他的样式的width为200
box.style.width = "200px";
//另一种写法 box.style.width = 200 + “px”;
//连接符都变成了驼峰命名法
box.style.backgroundColor = "pink";
  • Document 引申为 documen
  • 如果一个对象想要调用其方法,通过 . 来调用
  • 赋值用 ”“ 引起来

JS 控制结构

  • 修改标签里的内容
dom.innerHTML = "随便写";
dom.innerHTML = "<p>随便写</p>"
// innerHTML 就是往标签里添加内容

JS 事件的三要素

  • 三要素
  • 事件源
  • 事件
  • 事件处理程序(就是函数)

事件源.事件 = 事件处理程序

dom.ondblclick = function(){
            dom.style.backgroundColor = "green";
}
  • JS 事件都是以 on 开头

入口函数

  • 当整个文档加载完毕才执行
<head>
window.onload = function(){
        var box = document.getElementById("box");
        console.log(box);
        box.onclick = function (){
                box.style.backgroundColor = "green";
        }
}
</head>
<body>
        <div class="box" id="box"></div>
</body>

练习以及练习的抽离

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        *{
            padding: 0;
            margin: 0;
        }
        .box{
            border: 1px solid #000;
            text-align: center;
            background-color: deepskyblue;
        }
        .box img{
            width: 80px;
            cursor: pointer;
        }
        body{
            background:  url(images/huanfu/1.jpg) 0 0 no-repeat;
        }
    </style>
</head>
<body id="main">
<div class="box">
    ![](images/huanfu/1.jpg)
    ![](images/huanfu/2.jpg)
    ![](images/huanfu/3.jpg)
    ![](images/huanfu/4.jpg)
    ![](images/huanfu/5.jpg)
</div>
<script>
    // 1.先得到对应的标签
    var img1 =  document.getElementById("icon1");
    var img2 =  document.getElementById("icon2");
    var img3 =  document.getElementById("icon3");
    var img4 =  document.getElementById("icon4");
    var img5 =  document.getElementById("icon5");
    var body =  document.getElementById("main");

    // 2.事件源.事件 = 事件处理程序
    img1.onclick = function () {
        // 3.更改body的背景图片即可
        body.style.background = "url(images/huanfu/1.jpg) 0 0 no-repeat";
    }
    img2.onclick = function () {
        // 3.更改body的背景图片即可
        body.style.background = "url(images/huanfu/2.jpg) 0 0 no-repeat";
    }
    img3.onclick = function () {
        // 3.更改body的背景图片即可
        body.style.background = "url(images/huanfu/3.jpg) 0 0 no-repeat";
    }
    img4.onclick = function () {
        // 3.更改body的背景图片即可
        body.style.background = "url(images/huanfu/4.jpg) 0 0 no-repeat";
    }
    img5.onclick = function () {
        // 3.更改body的背景图片即可
        body.style.background = "url(images/huanfu/5.jpg) 0 0 no-repeat";
    }
</script>
</body>
</html>

抽离封装

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        *{
            padding: 0;
            margin: 0;
        }
        .box{
            border: 1px solid #000;
            text-align: center;
            background-color: deepskyblue;
        }
        .box img{
            width: 80px;
            cursor: pointer;
        }
        body{
            background:  url(images/huanfu/1.jpg) 0 0 no-repeat;
        }
    </style>
</head>
<body id="main">
<div class="box">
    ![](images/huanfu/1.jpg)
    ![](images/huanfu/2.jpg)
    ![](images/huanfu/3.jpg)
    ![](images/huanfu/4.jpg)
    ![](images/huanfu/5.jpg)
</div>
<script>
    // 1.先得到对应的标签
    var body =  document.getElementById("main");

    // 提供一个函数
    function changeImg(tag,url) {
        var dom =  document.getElementById(tag);

        // 事件源.事件 = 函数
        dom.onclick = function () {
            // 更改body的背景图片图片
            body.style.background = url;
        }
    }
    changeImg("icon1","url(images/huanfu/1.jpg) 0 0 no-repeat");
    changeImg("icon2","url(images/huanfu/2.jpg) 0 0 no-repeat");
    changeImg("icon3","url(images/huanfu/3.jpg) 0 0 no-repeat");
    changeImg("icon4","url(images/huanfu/4.jpg) 0 0 no-repeat");
    changeImg("icon5","url(images/huanfu/5.jpg) 0 0 no-repeat");

</script>
</body>
</html>

三次封装

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        *{
            padding: 0;
            margin: 0;
        }
        .box{
            border: 1px solid #000;
            text-align: center;
            background-color: deepskyblue;
        }
        .box img{
            width: 80px;
            cursor: pointer;
        }
        body{
            background:  url(images/huanfu/1.jpg) 0 0 no-repeat;
        }
    </style>
</head>
<body id="main">
<div class="box">
    ![](images/huanfu/1.jpg)
    ![](images/huanfu/2.jpg)
    ![](images/huanfu/3.jpg)
    ![](images/huanfu/4.jpg)
    ![](images/huanfu/5.jpg)
</div>
<script>
    // 1.先得到对应的标签
    var body =  document.getElementById("main");

    // 提供一个函数
    function changeImg(tag,url) {
        var dom =  document.getElementById(tag);

        // 事件源.事件 = 函数
        dom.onclick = function () {
            // 更改body的背景图片图片
            body.style.background = url;
        }
    }
 
    for(i = 1; i < 6; i++){
          changeImg("icon" + i,"url(images/huanfu/" + i + ".jpg) 0 0 no-repeat");     

}
</script>
</body>
</html>

数组的声明

  • 什么是数组
    数组是一个对象,是一个集合,就是用来存储其他变量的
  • 声明数组的方式
  • 第一种(几乎没人用)
var myArray = new Array();
  • 第二种
var myArr = [];

先定义后初始化

var arr = [];
arr[0] = 12;
arr[1] = 15;
arr[2] = 15;

定义的同时初始化

var arr2 = [12,3,4];
  • 数组的 .push 方法
arr2.push(45);
//从数组的最后添加元素
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容