js第二次培训

1.运算符与控制语句

(1)Js的运算符
算数运算符
使用方法和java一致

+  -   ++  --  /  *


逻辑运算符

与&  或|  非!  并且&&   或者||   亦或^  小于<   大于>
小于等于<=   大于等于>=  不等于!=


连接符

+  //在string类型参与运算的时候, +会变成连接符
1


特殊预算符
== 等值符

先比较类型, 如果类型一致, 则比较内容. 如果类型不一致, 会将比较的内容进行强制类型转换, 统一转换成number. 然后进行比较.

=== 等同符

类型不一致直接false. 类型一致比较内容.

(2)Js中的控制语句

和java中使用情况一致

条件语句

if(){} {}
if(){} else {}
if(){} else if() {}...else{}


分支语句(选择语句)

switch() {
       case value: break;
       case value2: break;
       default: break;
       }

循环语句
 

while(){}

do while(){}
         
for(var i = 0; i < 10; i ++){}

2.数组 

1.(1)什么是数组
数组是存储一个或多个数据的容器,它是一组内存空间,通常用来批量处理数据,这组内存空间名字叫做数组。
(2)数组的特点
数组是个不挑食的家伙,对齐自身储存的数据并没有什么要求,无论是数量还是类型,通过数组下标从来管理数组元素。
(3).length
数组名.length表示数组的长度,也是数组当前存储元素的个数,因为下标从0开始,所以数组长度-1表示数组最后一个元素的下标。
创建一个数组:
var arr = new Array();
字面量写法(语法糖):
var arr = [4,5,9,“haha”]
访问数组单个元素 arr[0];
访问数组全部元素需要和for循环结合使用;

在这里插入图片描述

2. 数组的遍历

(1)for
    最简单的一种循环遍历方法,也是使用频率最高的一种,可优化
    循环过程中支持修改索引(修改 i)

var arr = [1, 2, 3, 4, 5, 6]
for(var i = 0; i < arr.length; i++) {
    console.log(arr[i])
}

// 1 2 3 4 5 6


    优化:使用临时变量,将长度缓存起来,避免重复获取数组长度,当数组较大时优化效果才会比较明显

var arr = [1, 2, 3, 4, 5, 6]
var len = arr.length
for(var i = 0; i < len; i++) {
    console.log(arr[i])
}

// 1 2 3 4 5 6



(2)for…in…
    这个循环用的人也很多,但是效率最低(输出的 key 是数组索引),如果遍历的是对象,输出的则是对象的属性名

var arr = ['我', '是', '谁', '我', '在', '哪']
for(let key in arr) {
    console.log(key)
}

// 0 1 2 3 4 5

let obj = {
        a: 11,
        b: 22,
        c: 33
}
for(let key in obj) {
    console.log(key)
}
// a b c 

(3) forEach(也叫作增强for循环)


    1. 数组里的元素个数有几个,该方法里的回调就会执行几次
    2. 第一个参数是数组里的元素,第二个参数为数组里元素的索引,第三个参数则是它自己(利用第三个参数可以进行数组去重)
    3. 数组自带的遍历方法,foreach在循环次数未知或者计算起来较复杂的情况下效率比for循环高
    4. 循环的数组元素是基本数据类型,不会改变原数据的数据,循环的数组元素为对象,会改变原数组的对象属性的值
    5. 循环过程中不支持修改索引,回调中使用return不会报错,但是无效
    注意:不能使用break和continue跳出整个循环或当前循环的,会报错,但是结合try...catch可

var arr = [1, 2, 3, 4, 5, 6]
arr.forEach((item, idnex, array) => {
    console.log(item)     // 1 2 3 4 5 6
    console.log(array)    // [1, 2, 3, 4, 5, 6]
})

// 循环的数组元素是基本数据类型,不会改变原数据的数据
var arr1 = [1, 2, 3, 4, 5, 6]
arr1.forEach((item) => {
    item = 10
})
console.log(arr1) // [1, 2, 3, 4, 5, 6]

// 循环的数组元素为对象,会改变原数组的对象属性的值
var arr2 = [
    { a:1, b:2 },
    { a:11, b:12 }
]
arr2.forEach((item) => {
    item.a = 10
})
console.log(arr2) //  [{a: 10, b: 2}, {a: 10, b: 2}]

// 使用try...catch...可以跳出循环
try {
   let arr = [1, 2, 3, 4];
   arr.forEach((item) => {
       // 跳出条件
       if (item === 3) {
           throw new Error("LoopTerminates");
       }
       console.log(item);
   });
} catch (e) {
    if (e.message !== "LoopTerminates") throw e;
};
// 1 2

3.函数 

1.函数的概念:
JS中的函数:把一段需要重复使用的代码,用function语法包起来,方便重复调用,分块和简化代码。复杂一点的,也会加入封装、抽象、分类等思想。
2.函数的声明:
(1).函数表达式:
A.概念:函数只能在声明之后调用。因为这种方式声明的函数,是在函数运行的阶段才赋值给变量 f 的;
B.函数代码:

在这里插入图片描述

 

赋值式函数声明可以没有函数名。
函数定义和调用规范:先声明再调用。
(2).声明式:
A.函数声明的关键字 : function;
B.function 关键字 和 var 关键字的行为几乎一致,都会在内存上开辟一块空间,用来存储变量之中的数据;
核心代码:

function 函数名( 条件 ){
//代码
}


注:函数的命名规则和变量命名规则完全一致;
函数推荐驼峰命名; 变量推荐_命名;
函数代码:

在这里插入图片描述

 

函数定义了,会把代码默默的放在那里,不会去执行代码;只要在程序主动调用的时候,代码才会执行;
注:值得注意的是,当同时使用这两种方式声明同一个函数名,最终执行的是函数表达式声明的函数。
承接上图—函数代码:

在这里插入图片描述

 

最终输出结果:

在这里插入图片描述

 

(3).通过构造函数方法:
构造方法:var 变量名 = new Function(‘形参1’,‘形参2’…,‘函数体’);
函数代码:

在这里插入图片描述

效果图: 

在这里插入图片描述

 

3.函数的调用:
函数调用的两种形式;
(1).在代码之中调用;
函数名+(); 调用运算符; 函数可以多次调用;

在这里插入图片描述

 

(2)浏览器在特定时机帮你调用函数----------事件;
html标签进行触发 => 浏览器接受 => 浏览器调用函数;
在事件中调用,直接写函数名,不使用括号
代码如下:

在这里插入图片描述

console.log(btn);
在点击的时候会让浏览器调用对应的函数;
btn 就是元素的id;
onclick 是事件行为;
btn.odblnclick = foo;
效果图:

在这里插入图片描述

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

。疯狂派大星。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值