javascript进阶
javascript-进阶(1)
if语句
if语句流程图
if 在语句在执行时,会先对条件表达式进行求值判断,如果条件表达式为true,则执行if后的语句;如果表达式的值为false,则不执行if后的语句
if 通常搭配 {} 使用,表示如果条件表达式为true,则执行一个代码块
if 也可以搭配&&(与)、||(或)使用
基础
1 | 语法格式:if(条件表达式) {语句一;语句...} |
进阶使用
if 在语句在执行时,会先对条件表达式进行求值判断,如果条件表达式为true,则执行if后的语句;如果表达式的值为false,则执行else后的语句
1 | 语法格式: |
高级使用
当该语句执行时,会从上到下依次对表达式进行求值判断,如果值为true,执行当前语句;如果值为false,则会继续向下判断
1 | 语法格式: |
这个懒得放图了,请自行(
想象)尝试
练习题
练习题一:
1 |
|
——选自@bilibili尚硅谷
练习题二:
1 | 大家都知道,男大当婚,女大当嫁。那么女方家长要嫁女儿,当然也提出了3个条件:1.高:身高180cm以上;富:1000万以上;帅:500以上 |
——选自@bilibili尚硅谷
后记
因为后面的switch语句、for和while循环等,语法与其他语言类似,我先直接跳过
对象
简介
对象是一种复合的数据类型,在对象中可以保存多个不同的数据类型。说简单点就是:对象是将各个不同的、独立的数据类型组合、关联起来
1 | 对象的分类 |
对象的基本操作
1 |
|
对象的属性名和属性值
对象的本质是一个字典
对象的属性名不强制要求遵守标识符规范,保留字什么的都可以取,但我们应该遵循其规范
对象可以嵌套(套娃)
- JS的属性值可以是任意数据类型,也可以是一个对象
1
2
3
4
5
61.
var a = new Object();
var b = new Object();
a.object = b;
console.log(a.object); - 如果要使用特殊一点的属性名,比如数字123什么的,不能用”对象.属性名 = 属性值”的方式操作,要用”对象[‘属性名’] = 属性值”的方式操作,取的时候也是这种格式
1 | 2. |
3. 使用对象”[‘属性名’] = 属性值”取操作属性,更加的灵活,在[]中可以传递一个变量,这样那个变量是多少,就会读取对象的那个属性的值
1 | 3. |
基本数据类型和引用数据类型
基本数据类型
js中的的变量都是存储在栈里面的,基本数据类型都是的变量和值都是只存储在栈里面,互不相关,修改一个变量值并不会影响到其他变量的值
引用数据类型
对象则是存储在堆内存中的,每当我们New Object创建一个对象的时候,就会在堆内存里开辟一片空间,而变量保存的是对象的内存地址(对象的引用)
如果两个变量保持的是同一个对象的引用,当一个变量修改属性时,另一个也会收到影响
拓展
1 | //基本数据类型间的比较 |
总结:基本数据类型之间的比较是比较它们的值,值相同则相等;引用数据类型间的比较是比较两边的内存地址,就算两个变量的值相同也不相等
对象字面量
创建对象的另一种姿势
这种创建对象的方式跟new Object的效果是一样的,对象的本质就是键值对
1 | a = { |
函数
函数是什么
万物皆对象。函数是一组对象,可以这么说,Object是function的爸爸
函数里面也可以嵌套对象
构造函数的三种方式
构造函数有三种方式,但实际开发比较常用的只有一种方式,其他两种稍微了解即可
声明函数法(常用)
1 | //语法 |
构造函数法(不常用)
1 | //该方式和创建对象相似 |
函数表达式创建函数(不常用)
1 | //这个方法和声明函数法差不多,只不过是将函数声明赋值给变量 |
函数的参数(形参和实参)
定义一个函数,可在函数的()里指定一个或者多个形参,但不赋值,多个形式参数用逗号隔开
在函数的()指定形参称为声明形参,声明形参就相当于在函数内部声明了对应的变量
调用函数时在()内指定的参数叫做实际参数
在调用函数函数时,实参将会赋值给对应的形参,实参可以输入任意数据类型的值,函数解析时,解析器不会检查参数进行类型检查;形参的默认值为’undefined’
1 | //定义一个求和函数 |
函数的返回值
在函数中可以用return来设置函数的返回值,return后的值会作为函数结果返回,可以定义一个变量来接受返回的值,return的默认值为undefined
注意:当使用 return 后,后面的语句将失效
1 | //语法: |
实参可以是任何值
函数的实参可以是任何类型的值,也可以是一个对象,或者是一个函数
1 | /*写一个嵌套函数可计算其逆袭率,假如人的逆袭率=年龄乘以体重乘以身高除以存款*/ |
返回值的类型
函数的返回值可以是任何类型的值,也可以是一个对象,或者是一个函数
1 | //函数的返回值可以是一个函数 |
立即执行函数
优点:该函数执行完毕之后就会被内存扔掉,之后不会占用内存
1 | //立即执行函数,举个栗子 |
拓展-套娃函数
1 | function fun1(){ |
全局作用域
变量、函数声明提前
变量声明提前是什么?
使用var关键字声明的变量,会在所有的代码执行前被声明(但是不会赋值),所以不会报错,会显示”Undefined”;
但是不使用var关键字声明变量时,则变量不会被声明提前,会报错
1 | //变量声明提前示例: |
函数声明提前是什么?
使用函数声明形式创建的函数”function 函数名(){}”,他会在所有的代码执行前就被创建,因此我们可以在函数声明前调用函数
但是函数表达式创建的函数,不会被声明提前,所以不能在声明前调用
1 | //使用函数声明形式创建的函数示例: |