Python-JS基础(基础结构~函数)
程序本质上分为三大结构: 顺序结构、分支结构、循环结构
JavaScript中的程序结构也是这样,下面我们来分别介绍JS中的三种基本程序结构:
我们上篇博客中介绍到的使用逻辑运算符&&实现的就是类似于if单分支结构、
还有使用三目运算符实现的就是类似于if...else的分支结构,
下面我们就来正式介绍我们今天所要学的三个结构: 其中顺序结构在这里我们不在进行介绍,
因为JavaScript是解释型的脚本语言,所以它的执行顺序是从上而下顺序执行的, 我们主要介绍另外两种程序结构 一、分支结构
1、if语句
if 基础语法 if (条件表达式) {
代码块;
}
// 当条件表达式结果为true,会执行代码块;反之不执行
// 条件表达式可以为普通表达式
// 0、undefined、null、""、NaN为假,其他均为真
if 复杂语法 // 1.双分支
if (表达式1) {
代码块1;
} else {
代码块2;
}
// 2.多分支
if (表达式1) {
} else if (表达式2) {
}
...
else if (表达式2) {
} else {
}
if 嵌套 if 和 if 直接可以随意嵌套 if (表达式1) {
if (表达式2) {
}...
}...
if 案例: var salary = prompt("请输入所发工资:");
if (salary > 0) {
console.log("工资已发, 打算还账!");
salary -= 100000;
if (salary > 0 ) {
console.log("拯救世界...");
} else if (salary == 0) {
console.log("家里蹲, 峡谷见");
} else {
console.log("借钱, 填窟窿, 谁来拯救我...");
console.log("借%d元钱", -salary);
}
} else {
console.log("拿我刀来, 允许你跑49m");
}
2、switch语句
switch (表达式) {
case 值1: 代码块1; break;
case 值2: 代码块2; break;
default: 代码块3;
}
// 1.表达式可以为 整数表达式 或 字符串表达式
// 2.值可以为 整数 或 字符串
// 3.break可以省略 break作用是结束分支结构(break结束所属switch语句)
// 4.default为默认代码块,需要出现在所有case最下方,在所有case均未被匹配时执行
switch案例一: var num = prompt("请输入一个自然数") //输入接受的默认是字符串类型数据
var num = +num;
switch (num){
case"0":console.log("用户输入的数字是0");break;
case"1":console.log("用户输入的数字是1");break;
default:console.log("用户输入的数字非0和1");
}
default分支, 出现在所有case之下, 当所有case没有匹配上, 走该分支,
该分支也可以省略, 代表没有未匹配到的动作
switch案例二:
该案例想要展示的是省略break的情况, 该省的时候省,不该省的时候不能省,
比如在该程序中, 输入月份之后,省略了多个break,让case公用一个,如果在第一行匹配成功并且打印出来该月份为31天,如果后面没有break,就会继续往下执行,不会继续进行匹配,会直接进行打印操作,这样就背离了我们的需求.所以在适当的位置还是要加上break的. var month = +prompt("请输入月份");
switch (month) {
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
console.log("%d月天数为31天", month); break;
case 4: case 6: case 9: case 11:
console.log("%d月天数为30天", month); break;
case 2:
console.log("%d月天数为28天", month);
}
二、循环结构
1、for循环
for (循环变量定义并初始化①; 循环变量条件表达式②; 循环变量增量③) {
代码块④;
}
// 1.循环变量可以在外、在内声明
// 2.执行逻辑 ① ②④③ ... ②④③ ②,入口为①,出口为②(最终总会因为不满足条件而退出),②④③个数为[0, n]
简单案例: for (var i = 0; i < 5; i++) {
console.log("我最棒, 我最帅, 我是天下第一!");
}
2、while循环
while (条件表达式) {
代码块;
}
简单案例: var count = 0;
while (count < 5) {
console.log("我最棒, 我最帅, 我是天下第一!");
count++;
}
小结: 所有for循环可以解决的问题,都可以由while来解决 while循环可以解决不明确循环次数的循环需求 break | continue 在JS的循环体中同样适用
break: 结束当前所属循环体
continue: 结束本次循环,进入下一次循环
简单案例: for (var i = 0; i < 5; i++) {
if (i == 3) break;
console.log(i); // 0, 1, 2
}
for (var i = 0; i < 5; i++) {
if (i == 3) continue;
console.log(i); // 0, 1, 2, 4
}
3、do...while循环
do {
代码块;
} while (条件表达式);
无论条件是否满足,都需要执行一次循环体 (循环体至少被执行一次)
简单案例: var num = 0;
do {
console.log("我最棒, 我最帅, 我是天下第一!");
num++;
} while (num < 5); // 当条件满足时, 返回循环体
4、for...in循环
用于遍历对象:遍历的结果为key,通过[ ]语法访问对应的value obj = {"name": "zero", "age": 8}
for (k in obj) {
console.log(k, obj[k])
}
5、for...of循环
1.用于遍历可迭代对象:遍历结果为index,通过[]语法访问对应的value
2.ES6新增,可迭代对象有 字符串、数组、Map、Set、Anguments、NodeList等 iter = ['a', 'b', 'c'];
for (i of iter) {
console.log(iter[i])
}
6、break,continue关键词
break:结束本层循环 continue:结束本次循环进入下一次循环 三、异常处理(了解)
JS是一个处理前端的脚本语言,很大一部分页面中需要的数据都是直接从后台获取的,所以在JS中不用对数据进行太精确的处理, 所以JS中的异常处理的使用场景非常少,我们在这做一个简单的介绍: <script>
// 了解
let num = 10;
try {
console.log(num); // try...catch捕获的是runtime时的异常
let num = 20;
} catch (e) {
console.log(e) // catch为处理异常的分支
} finally {
console.log('无论是否出现异常,该分支都会被执行')
}
</script>
四、函数初级
什么是函数: 具有特定功能的代码块 函数与方法的区别: 调用方式的不同: 函数通过函数名 | 方法通过调用者.语法调用 如何定义函数: function 函数名(参数列表){
函数体
}
函数的分类: 无参函数: function fn1(){
console.log("无参函数")
}
fn1();
有参函数: function fn2(a,b){
console.log("a,b的和:".a + b)
}
fn2(10,20);
1、函数的定义
ES5中定义函数 function 函数名 (参数列表) {
函数体;
}
var 函数名 = function (参数列表) {
函数体;
}
ES6中定义函数 let 函数名 = (参数列表) => {
函数体;
}
匿名函数
(function (参数列表) {
函数体;
})
// 匿名函数需要自调用
(function (参数列表) {
函数体;
})(参数列表);
var fn3=function(){
// 匿名函数虽然没有名字,但会开辟内存空间,所以当然可以用一个变量来指向这个内存空间
console.log("没有直接定义名字的函数")
}
fn3();
匿名函数的自调用: (function(){
// 定义一个匿名函数,至少需要使用一次,使用一次的方式就叫做匿名函数的自调用
// 如果匿名函数不存在任何使用,编译就无法通过
// 匿名函数的自调用:
// 1.将整个匿名函数作为一个整体,用()将其包裹
// 2.完成函数的调用,添加参数列表
console.log("匿名函数的自调用")
})()
为什么要出现匿名函数的自调用 在ES5 的时候,没有块级作用域的概念,想要产生局部作用域的变量只能通过在函数体内部定义变量了, 所以匿名函数的自调用很多时候是为了生成一个局部的作用域 (function(){
// 为了生成一个局部作用域
var num = 10;
})();
2、函数的调用
函数名(参数列表) 注意: 函数的调用()一定不可以省略,参数列表看情况(不管需不需要,均可以传或不传) 系统不会在()()之间添加; 作为结束语句,需要添加分号时一定需要手动添加 3、函数的参数
JS中有参函数调用的原则: JS中只有位置参数,没有关键字参数
传参数的时候, 无论传多少个值,严格按照位置参数进行一一对应进行传值, 多传的参数没有对应的位置参数进行接收时会自动被丢弃
在传参的时候指定哪个值为多少时要按照位置进行传值,按照参数名进行传值是无效的
function func1() {
console.log("无参");
}
// 传不传参数均可以调用
func1();
func1(10, 20); function func2(a, b) {
console.log(">>>", a + b);
} func2()
func2(10)
func2(10, 20)
func2(10, 20, 30)
默认值参数 使用默认值参数时,传入的值也是按照位置进行传值的
不管该位置参数是否有默认参数,只要该位置有值传进来该位置上的参数值就会被替代
function func3(a, b=20, c, d=40) { // 定义在函数声明中的参数为形参
console.log("***", a + b + c + d);
}
var temp = 1000;
func3(10, 100, temp) // 函数调用传入的实际值,或拥有实际值的变量为实参
JS中函数传参时的大致规则: 个数不需要统一 function fn (a, b, c) {
console.log(a, b, c); // 100 undefined undefined
}
fn(100);
function fn (a) {
console.log(a) // 100
}
fn(100, 200, 300) // 200,300被丢弃
可以任意位置具有默认值 function fn (a, b=20, c, d=40) {
console.log(a, b, c, d); // 100 200 300 40
}
fn(100, 200, 300);
通过...语法接收多个值 function fn (a, ...b) {
console.log(a, b); // 100 [200 300]
}
fn(100, 200, 300);
// ...变量必须出现在参数列表最后
函数的参数小结::
1.实参与形参个数可以不匹配,随意规定
2.形参可以设置默认值(并非为py中的关键字参数)
3.实参对形参进行传值时,完全采用位置匹配(eg:第n个实参一定将值传递给第n个形参) 4、返回值
function fn () {
return 返回值;
}
// 1.可以空return操作,用来结束函数
// 2.返回值可以为任意js类型数据
// 3.函数最多只能拥有一个返回值
js的函数只能返回一个值, 这个值可以为任意类型(如果想返回多个值,将多个值放到数组或对象中) let func4 = () => {
// return 1000, 8888, 6666; // 这种情况返回的是最后一个值
return [1000, 8888, 6666];
};
console.log(func4())
函数的返回值小结::
1.函数的返回值有return来明确,没有明确,则相当于返回undefined
2.函数只能返回一个值
3.函数的返回值就是函数的执行结果,也就是函数值
---------------------
原文:https://blog.csdn.net/Onion_cy/article/details/85075731
Python-JS基础(基础结构~函数)的更多相关文章
- Python入门基础之函数、切片
Python之函数 Python不但能非常灵活地定义函数,而且本身内置了很多有用的函数,可以直接调用. Python之调用函数 Python内置了很多有用的函数,我们可以直接调用. 要调用一个函数,需 ...
- JS基础:函数
函数声明和函数表达式 在 JS 中定义函数的方式有两种:一种是函数声明,一种是函数表达式. 例如: //函数声明 function fun() { ... } //函数表达式 var f = func ...
- JS基础-运算符-函数
1.运算符 1.赋值运算符和扩展运算符 1.赋值运算符 = 2.扩展运算符 +=,-=,*=,/=,%=,^=.... ex: a=a+b;--> ...
- Python 入门基础10 --函数基础3 函数对象、名称空间、装饰器
今日内容 1.函数对象 2.名称空间与作用域 3.函数的嵌套调用与闭包 4.装饰器 一.函数对象 1.1 定义 函数名存放的就是函数地址,所以函数名也就是对象,称之为函数对象 1.2 函数对象的应用 ...
- Python 入门基础11 --函数基础4 迭代器、生成器、枚举类型
今日目录: 1.迭代器 2.可迭代对象 3.迭代器对象 4.for循环迭代器 5.生成器 6.枚举对象 一.迭代器: 循环反馈的容器(集合类型) 每次重复即一次迭代,并且每次迭代的结果都是下一次迭代的 ...
- Python入门基础学习(函数)
Python基础学习笔记(三) 函数的概念: 所谓函数,就是把具有独立功能的代码块组织为一个小模块,在需要的时候调用 函数的使用包含两个步骤: 1.定义函数 --封装独立的功能 2.调用函数 --享受 ...
- Python 入门基础12 --函数基础5 匿名函数、内置函数
今日内容: 1.三元表达式 2.列表.元组生成式 | 字典生成式 3.递归 4.匿名函数 5.内置函数 一.三元表达式 三元运算符:就是 if...else... 语法糖 前提:if 和 else # ...
- Js基础之函数
定义函数:我们使用function标签来定义函数 使用函数:JavaScript函数定义完毕是不能自动执行的,需要我们调用或者事件触发,比如点击事件,鼠标事件,键盘事件等. 下面我们以点击事件为例,调 ...
- js基础:函数表达式和函数声明
函数表达式和函数声明的区别.实际上,解析器在向执行环境中加载数据是,对函数表达式和函数声明并非一视同仁.解析器会率先读取函数声明,并使其在执行任何代码之前可用.而函数表达式,则必须等到解析器执行到它所 ...
随机推荐
- 有趣的async
在项目的开发过程中,同步异步是一个很重要的概念.但是在js中,又会有稍微的不同. 依据微软的MSDN上的解说: (1) 同步函数:当一个函数是同步执行时,那么当该函数被调用时不会立即返回,直到该函数所 ...
- [Offer收割]编程练习赛13 解题报告
http://hihocoder.com/contest/offers13/problems 题目1 : 风格不统一如何写程序 首先:输入保证组成变量名的单词只包含小写字母. 做法:只要对不同的部分进 ...
- Deformable ConvNets
Deformable ConvNets 论文 Deformable Convolutional Networks(arXiv:1703.06211) CNN受限于空间结构,具有较差的旋转不变性,较弱的 ...
- shiro+SpringMVC 项目 配置404页面
说的配置404,大家都会想到去web.xml里面配置 <error-page> <error-code></error-code> <location> ...
- (递推)一只小蜜蜂... hdu2044
一只小蜜蜂... 链接:http://acm.hdu.edu.cn/showproblem.php?pid=2044 Time Limit: 2000/1000 MS (Java/Others) ...
- Hadoop记录-hadoop介绍
1.hadoop是什么? Hadoop 是Apache基金会下一个开源的大数据分布式计算平台,它以分布式文件系统HDFS和MapReduce算法为核心,为用户提供了系统底层细节透明的分布式基础架构. ...
- 解决iOS10下Meta设置user-scalable=no无效问题
苹果为了提高Safari中网站的辅助功能,屏蔽了Meta下的user-scalable=no功能 所以在iOS10下面,就算加上user-scalable=no,Safari浏览器也能支持手动缩放 解 ...
- 正方体旋转demo
接着上一篇博客的内容顺藤摸瓜往下想,既然stage有景深这个概念,可以表达3D场景,那么这个stage就可以呈现立体几何咯,于是自己写了个Cubic Demo 一个正方体有6个面,我们把一个正方体平铺 ...
- VMware WorkStation9.0 安装centos-6.4
1,设置虚拟机内存为8G时,启动报内存不足错误: Not enough physical memory is available to power on this virtual machine 解决 ...
- C# 与 SQL Server 的数据类型对应关系
(一)C#与SQL Server 2005(或以下版本): C# C#取值 SQL Server SQL Server取值 System.DateTime samlltime System.Objec ...