JavaScript进阶

JavaScript进阶

这一篇文章, 我们会讲述四个关于JavaScript的学习内容

一、条件判断

二、循环

三、函数

四、定时器

一、条件判断

js条件判断的语义 逻辑 和python一样 语法不同
python里面的判断关键字是if
js也是一样, 关键字也是if
if 条件

// if 条件
var a = 10;
var b = 10;
// 最基本的条件判断
if(a === b){
  // 如果条件成立 则执行里面的代码
  console.log("条件成立");
  alert("条件成立");
  // else 后面可以不加条件
}else{
  console.log("条件不成立");
  alert("条件不成立");
}

结果:

控制台:

逻辑判断, 我们在上一篇javascript基础里面讲到过了, 就是三个等号的意思, 如果这方面还是不明白, 需要复习以下之前的内容。

多条件判断
比如说年龄判断
场景:
年龄大于等于50岁 你就不能上网了 小于18岁 不能上网

// let age = 17; // 弹出窗口:你未成年, 不能上网!
// let age = 18; // 弹出窗口:你已经成年了, 可以上网了!
let age = 60; // 弹出窗口:你超过50岁, 还是别上网了!
if(age >= 50){
	alert("你超过50岁, 还是别上网了!");
}else if(age >= 18){
	alert("你已经成年了, 可以上网了!");
}else{
	alert("你未成年, 不能上网!");
}

js和python的逻辑是一样的 只不过写法有点儿区别
逻辑运算符 and --> && --> 与/并且 or --> || --> 或

let a1 = 10;
let b1 = 20;
// &&左右两边条件都为真 才为真 只要有一个条件为假 那就为假
// ||左右两边 只要有一个为真 那就为真
// ! 相当于not, 对结果取反
if(a1 > 10 && b1 > 0){
	console.log("条件成立");
	alert("条件成立");
}else{
	console.log("条件不成立");
	alert("条件不成立");
}
if(a1 > 10 || b1 > 0){
	console.log("条件成立");
	alert("条件成立");
}else{ 
	console.log("条件不成立");
	alert("条件不成立");
}
if(!(a1 > 10 || b1 > 0)){
	console.log("条件成立");
	alert("条件成立");
}else{
	console.log("条件不成立");
	alert("条件不成立");
}

结果:

控制台:

二、循环

1.普通的for循环
for (语句1, 语句2, 语句3){
被执行的代码块
}

// 自增 后置自增i++ 前置自增++i
for (let i = 0; i < 5; i++) {
	console.log(i);
}

结果:

2.根据可迭代对象循环 数组 字符串
注意, 这里有个关键字是of

// 被执行的代码块
let arr = [1, 2, 3, 4, 5]
// let i in arr --> 类似于python语法, js是let i of arr
for (let a of arr) {
	console.log(a);
}

object对象 --> 类似于python当中的字典

let a = {
	name: "Nathan",
	age: 20,
	i: "湖南省"
}
for(let i of a){
	console.log(i);
}

结果发现, 这里报错了
报错信息:i is not iterable
这里有个很关键的点, 如果我们想要对objects对象进行遍历的话, 那就必须使用in这个关键字。

for (let i in a) {
  // 和python一样, 遍历出来都是键 key
  // console.log(i);
  // 如何拿到键 对应的值?
  // console.log(a.i);
  // 打印了三次"湖南省", 他会默认从对象a里面找i键值对, 这不是我们想要的结果
  // 那怎么办呢?
  // 注意:这里面有一个细节
  // 要想拿到对象里面的值 必须要使用 对象[]
	console.log(a[i]);
}

如果这里直接打印:console.log(i);那就会输出所有的键 key
拿到键对应的值的方法, 我们可以想到上一篇写到的对象怎么提取键对应的值。
但结果发现, 这种写法, 打印了三次"湖南省", 他会默认从对象a里面找i键值对, 这不是我们想要的结果。
最终解决办法就是: 使用对象[]的方法去获取objects里面键对应的值。

关于上面这段代码, 大家可以手动尝试去运行下。

while循环 一定是根据条件循环

let _a = 0;
// 只要条件成立, 就会疯狂的执行
// 我们要避免出现死循环, 比如以下情况:
// while(_a == 10){
// 	console.log("死循环");
// }
// 在while循环中, 如果需要结束循环, 那么就要改变条件
while(_a < 10){
	console.log("无限循环");
	// 可以循环一次 让a自增 每循环一次 a都会加1 累加
	_a++;
}

我们要避免死循环而导致网页卡死崩溃的情况, 当while里面的条件一直成立的时候, 就会出现死循环。

break和continue的用法

// break和continue	break: 结束整个循环	continue: 结束当前循环 进入下一个循环
let arr_a = [1, 2, 3, 4]
for(let i of arr_a){
	if(i == 3){
		break;
	}
	console.log(i);
	}
let arr_a2 = [1, 2, 3, 4]
for(let i of arr_a2){
	if(i == 3){
		continue;
	}
	console.log(i);
}

反引法
python里面的字符串格式化 -->f插值法 将变量插入到字符串里面 f"{变量}"
js的格式化方法:${变量}

let var_a = 10;
console.log(`我今年${var_a}`);

结果:

三、函数

函数就是一个封装功能的代码块 可以重复的使用
python里面的函数是def
js中 函数的写法 分为两种
1.普通的写法 function 函数名(){写函数的代码} 调用函数的方法:函数名();

function a(){
	console.log("我是函数a");
}
a(); // 调用函数

2.箭头函数 什么叫做箭头函数? 需要有一个箭头
创建一个变量叫做b, 它里面存着一个箭头函数 一般叫做箭头函数b
区别: 箭头函数 看起来简单 有一个优点 箭头函数里面 没有指针 this

let b = () => {
	console.log("我是函数b");
}
b();

函数里面的参数, 形参和实参

let b1 = (x) => {
	console.log(x);
}
b1(1);

传了形参 都需要有对应的形参来接受 x就是你传过来的1

结果:

在调用函数的时候, 可以往里面传入参数 实参
类似python中的位置参数 形参和实参需要一一对应 不能多也不能少

let b2 = (x, y) => {
	console.log(x, y);
}
b2(1, "Nathan");

结果:

y叫做默认参数 实参可以不传
如果y传了值, 就以传的为准, 如果没有传值, 默认就是20

let b3 = (x, y = 20) => {
	console.log(x, y);
}
b3(1, 30);

结果:

return关键字返回函数值

let b4 = (x, y = 20) => {
	// 通过return 关键字 将函数内部的值返回出去
	return x + y;
}

如果你想看到返回值 就必须要调用函数并赋值, 否则结果是打印不出来的哦。

let result = b4(1);
console.log(result);

结果:

下面我们介绍箭头函数的独有写法, 注意:普通函数不能这么写哦
let b4 = (x, y = 20) => {x + y}
不需要return, 直接写在一行, 这样也可以返回x + y的值

函数嵌套

let _a = () =>{
	console.log("我是函数_a");
	// 在函数a里面调用函数b
	_b();
}
let _b = () =>{
	console.log("我是函数_b");
}
// 调用函数a
_a();

结果:

注意:
函数的执行顺序 和你创建函数的顺序无关
谁先执行, 就先打印谁

作用域

在函数里面 叫做局部作用域 函数外面就叫做全局作用域 局部作用域里面的变量叫做局部变量

let function1 = () => {
	let _a1 = 10;
	console.log(_a1);
}
function1();
// _a1是局部变量
// 函数外面没办法访问
console.log(_a1); // 报错, 因为局部变量在函数外面没办法访问

结果:

四、定时器
在JavaScript当中, 有两个定时器
分别是setTimeOut()和setInterval()
1.setTimeOut()
定时器 setTimeout() 一段时间之后 就会发生的事情

有两个参数 回调函数 => 经过一定的时间之后 会自动执行 不需要手动的去调用 经过的时间 以毫秒为单位 1s约等于1000ms

执行的次数只有一次 不会重复的执行

setTimeout(() => {
	console.log("2秒钟之后执行代码");
}, 2000);

结果:

我们可以看到, 在控制台里面, 过了2秒钟之后, 文字就跳出来了。

2.setInterval()
每个一段时间会执行一次
相当于无限循环

setInterval(() => {
  console.log("我打印了");
}, 3000);

结果:

我们发现每间隔3秒, 会连续不断的打印信息

那我们该怎么解决无限循环的问题呢? 怎么关闭定时器?

比如说我们只想要让它运行一次, 就直接终止循环
解决办法:

var a = 0;
var timeOut = setInterval(() => {
	console.log("我打印了");
	this.a++;
	if(a >= 1){
		clearInterval(this.timeOut);
		if(this.timeOut != null){
			this.timeOut = null;
		}
	}
}, 3000);

结果:

很明显能够看到, 这个"我打印了"只输出一次了。成功解决问题。

那之后实战常用关闭定时器的方法:需要我们用户来关闭 我们需要和网页做交互 点击某个按钮 来让定时器停止。

<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
    <button onclick="openTimer()">开启定时器</button>
		<button onclick="closeTimer()">关闭定时器</button>
	</body>
</html>
var interval = null;
var openTimer = () => {
	this.interval = setInterval(() => {
		console.log("1秒钟之后执行代码");
	}, 1000);
}
var closeTimer = () => {
	clearInterval(this.interval);
	if(this.interval != null){
		this.interval = null;
	}
}

结果:

我们点击开始定时器

开启定时器后, 每隔一秒钟就会运行内容
我们再点击关闭定时器

结果:

我们就可以发现, 45一直都没有动, 这就说明我们成功的关闭了定时器。

以上就是js进阶使用的所有内容了, 如果有哪里不懂的地方,可以把问题打在评论区, 大家互相学习一起进步, 欢迎随时来提问题!!!
如果我有写错的地方, 望大家指正, 也可以联系我, 让我们一起努力, 继续不断的进步.
学习是个漫长的过程, 需要我们不断的去学习并掌握消化知识点, 有不懂或概念模糊不理解的情况下,一定要赶紧的解决问题, 否则问题只会越来越多, 漏洞也就越老越大.
人生路漫漫, 白鹭常相伴!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值