一、类型转换的复习
隐士数据类型转;
- 两边都是数字类型,加运算,两边只要有一个字符串,另外会转为字符串,字符串的拼接
 - / % 把两边的数据转换为数字类型
 
显示数据类型转换
- Number()其他类型转数字类型
 - 其他类型转布尔类型 0 ,NaN, undefined, null, “”会转换为false, 其他会转换为true
 
<script>// 1.隐士数据类型转;console.log(3 + 5);/* 两边都是数字类型,加运算,两边只要有一个字符串,另外会转为字符串,字符串的拼接 */console.log('3' + 5);console.log(false + 5);// - * / % 把两边的数据转换为数字类型console.log('6' - '3')console.log('6' * '3')console.log('6' / '3')console.log('13' % '2')console.log('土豆' % 13);// 2.显示数据类型转换// Number()其他类型转数字类型console.log(Number('12'))console.log(Number('玉兰花'))let abcconsole.log(Number(abc))console.log(Number(true))console.log(Number(false))// 其他类型转布尔类型 0 ,NaN, undefined, null, ""会转换为false, 其他会转换为truelet a = ""console.los(Boolean());</script>
1、加号(正号)
+(正好)数据可以将其他类型转换为数字类型
<script>// +(正好)数据,可以将其他类型转换为数字类型let num1 = +"5"console.log(num1, typeof num1);let num2 = +prompt('请输入年龄')console.log(num2, typeof num2)</script>
错误示范:
<script>console.log(age);//Identifier 'age' has already been declared 变量重复声明let age = 10let age = 20missing ) after argument list少)document.write("嘻嘻:</script>
函数的介绍和基本使用
- 掌握函数的基本使用,让代码复用
 - 掌握内置函数,实现一些计算效果
 
1.1、函数的作用
函数: function,是被设计为执行特定任务的代码块
说明:
- 函数可以把具有相同或相似逻辑的代码“包裹”起来,通过函数调用执行这些被“包裹”的代码逻辑,这么做的优势是有利于
精简代码方便复用。<script>// 交换两个变量的值function fn() {let x = 5, y = 10, z;z = x;x = y;y = z;console.log(x, y);}// 调用函数fn();// 打招呼function sayHi() {console.log('嗨~');}sayHi()</script>
 
- 函数可以把具有相同或相似逻辑的代码“包裹”起来,通过函数调用执行这些被“包裹”的代码逻辑,这么做的优势是有利于
 
1.2、函数的基本语法
函数名命名规范
- 和变量命名基本一致
 - 尽量小驼峰式命名法
 前缀应该为动词
- 命名建议:常用动词约定 | 动词 | 含义 | | :—-: | :—-: | | can | 判断是否可执行某个动作 | | | | | | | | | | | | | | | |
 
//任意三个数字getRes(10,2,3)getRes(6,2,5)// 声明函数function sayHi() {//函数体document.write('你好吗,我还好')}sayHi() *//函数的调用 函数名()// 函数不调用,不执行,调用了才执行,次数没有限制
二、有参数的函数
2.1
//函数声明的时候,()里边的是形象function getRes(x, y) {document.write(x + y)}//函数调用的时候()里边的是实参getRes(3, 4)sayHi()
2.3、形参和实参
function getSum(num1,num2) {document. wnite( num1 + num2)}getSum(10,20)实参
- 形参:声明函数时写在函数名右边小括号里的叫形参(形式上的参数)
 
案例-有参数的函数课堂练习-计算公里
<script>// 让用户输入开车时速,以及开了多少小时的车,计算出这辆车跑了多少公里要求: 计算部分封装成函数let speed = prompt('请输入您的速度')let hour = prompt('请输入您开车时常')/* 1.需不需要参数2.功能 */function getRes(speed, hour) {document.write(`您走了${speed * hour}公里`)}//实数可以任意类型的数据getRes(speed, hour)</script>
2.4、形参和实参个数不相等的问题
- 实参多,形参少,多余的实参传不进去
 - 实参少, 形参多, 多余的形参因为没有实参传入给他, 多余的形参是undefined
 
function getSum(x, y, z) {document.write(x + y + z)}getSum(3, 5)
三、有返回值的函数
提问:是什么是函数?
- 函数是被设计为
执行特定任务的代码块 
- 函数是被设计为
 提问:执行完特定任务之后,然后呢?把任务的结果给我们
- 缺点:把计算后的结果处理方式写死了
 - 内部处理了解决:把处理结果返回给调用者
 有返回值函数的概念:
- 当调用某个函数,这个函数会返回一个结果出来
 - 这就是有返回值的函数
 
3.1、用return返回数据
- 当函数需要返回数据出去时,用
return关键字 
return数据    return 20
//函数的预算结果,如果想在函数外边使用,函数就现需要返回值function getSum(x,y) {return x +y}//返回值的作用, 是将函数运行的结果赋值黑函数调用// getSum(3, 5) = s + ylet num = getSum(10,30)document.write(num)
3.2、ruturn注意的细节部
- 函数没有return, 或者return, 但是后边没有数据, 返回值是undefine
 - 函数体内,return 下一行的代码不执行,return有终止函数执行的作用
 - return需要的返回的值, 不要换行
 
<script>function getSum(x, y) {/* 1.函数没有return, 或者return, 但是后边没有数据, 返回值是undefined2.函数体内,return 下一行的代码不执行,return有终止函数执行的作用3.return需要的返回的值, 不要换行 */return}let sum = getSum(4, 6)console.log(sum)</script>
3.3、有返回值的函数小结
目标:掌握有返回值的函数,把函数处理结果给调用者
为什么要让函数有返回值
- 函数执行后得到结果,结果是调用者想要拿到的(一句话,函数内部不需要输出结果,而是返回结果)
 - 对执行结果的扩展性更高,可以让其他的程序使用这个结果
 
函数返回值使用哪个关键字?
- 语法: return数据
 - return后面不接数据或者函数内不写return,函数的返回值是undefined
 - return能立即结束当前函数,所以return后面的数据不要换行写
 
四、parseint类型
4.1、内置函数之数字提取-parseInt /~parseFloat
parseInt()
- 是一个返回值为number类型的函数
 - 作用:从字符串中提取出整数
 细节:
- 1.字符串内容从左到右依次分析是否数字,直到遇到非数字停止
 - 2.如果字符串不是以数字开头,得到NaN
 
parseFloat()
- 作用:从字符串中提取数字(包括小数)
 细节:
- 字符串内容从左到右依次分析是否数字,直到遇到第二个小数点或者非数字停止
 - 如果字符串不是以数字开头,得到NaN
 
//代码:parseInt()<script>let num1 = 12.23let num2 = 23.98let str1 = '123abc'let str2 = '12312啊哈哈哈'let str3 = '啊哈哈哈'//可以将其他类型转换为数字类型//1. 字符串从左到右,依次提取,遇到非数字停止// 2.如果字符串是非数字,得到NaNconsole.log(typeof parseInt(num1)); //numberconsole.log(parseInt(num2)); //23.98console.log(parseInt(str1)); //123console.log(parseInt(str2)); //12312console.log(parseInt(str3)); //NaNconsole.log(parseInt(true)) //nan</script>-------------------------------------------------------//代码:parseFloat()let num1 = 12.23let num2 = 23.98let str1 = '123abc'let str2 = '12312啊哈哈哈'let str3 = '啊哈哈哈'//1. 字符串从左到右,依次提取,遇到非数字停止或者在第二个小数点停止// 2.如果字符串是非数字,得到NaNconsole.log(typeof parseFloat(num1)); //numberconsole.log(parseFloat(num2)); //23.98console.log(parseFloat(str1)); //123console.log(parseFloat(str2)); //12312console.log(parseFloat(str3)); //NaNconsole.log(parseFloat(true)) //nanconsole.log(parseFloat(false)) //nan
五、内置函数案例
目标:通过案例巩固内置函数调用
计算公式:计算时分秒
- 小时:h = parseInt(总秒数/ 60 / 60 % 24)
 - 分钟:m = parseInt(总秒数/ 60 % 60 )
 - 秒数:s = parseInt(总秒数% 60)
 
<script>//用户输入总秒数,转换成里边几小时几分几秒let total = prompt('请输入总数')function getTime(t) {//剩余多少小时 36661秒hours = parseInt(t / 60 / 60 % 24)//分数秒min = parseInt(t / 60 % 60)//秒数sec = t % 60return (`${hours}:${min}:${sec}`)}let time = getTime(total)document.write(time)</script>
二、js对象
一.对象的介绍和语法
- 用户信息
 - 产品信息
 - 订单信息
 
1.1、对象是什么
- 对象(object) : JavaScript里的一种数据类型
 - 可以理解为是一种数据集合
 用来描述某个事物,例如描述一个人
- 人有姓名、年龄、性别等信息、还有吃饭睡觉打代码等功能
 - 如果用多个变量保存则比较散,用对象比较统一
 
1.3、属性和访问
1.对象有属性和方法组成
属性:信息或叫特征(名词)。比如手机尺寸、颜色、重量等…
方法:功能或叫行为(动词)。比如手机打电话、发短信、玩游戏…
你还能举例吗?
let对象名 ={属性名:属性值,方法名:函数}
2.属性
- 数据描述性的信息称为属性,如人的姓名、身高、年龄、性别等,一般是名词性的。
let person = {uname: 'andy' ,age: 18,sex:'男'}
 
- 数据描述性的信息称为属性,如人的姓名、身高、年龄、性别等,一般是名词性的。
 
属性都是成对出现的,包括属性名和值,它们之间使用英文:分隔
多个属性之间使用英文,分隔
属性就是依附在对象上的变量(外面是变量,对象内是属性)
属性名可以使用””或”‘,
一般情况下省略,除非名称遇到特殊符号如空格、中横线等
3.属性和访问
声明对象,并添加了若干属性后,可以使用﹒或[获得对象中属性对应的值,我称之为属性访问。
注意:使用﹒和[]结果是一样的
写法由区别:
点后面的属性名一定不要加引号
里面的属性名一定加引号
后期不同使用场景会用到不同的写法
<script>let goods = {name: '小米10青春版',num: 100012816024,weight: '0.55kg',address: '中国大陆'}//属性的访问//写法1:对象名.属性名//写法2:对象名['']console.log(goods.name)console.log(goods['num'])</script>
案例:
<script>let wanghao = {name: '王浩',age: 18,}//追加属性,在括号的外白给对象添加属性//1.对象名.属性=值//2.对象名['属性']=值wanghao.sex = '男'wanghao['love'] = '女'console.log(wanghao)</script>
4.方法和访问
对象中的方法
- 数据行为性的信息称为方法,如跑步、唱歌等,一般是女词性的,其本质是函数。
sayHi : function() {name: "andy' ,sayHi : function() {document.wnite( 'hi~~')}}
 
- 数据行为性的信息称为方法,如跑步、唱歌等,一般是女词性的,其本质是函数。
 
方法是由方法名和函数两部分构成,它们之间使用:分隔
多个属性之间使用英文,分隔
方法是依附在对象中的函数
方法名可以使用””或’’,一般情况下省略,除非名称遇到特殊符号如空格、中横线等
案例:
<script>let wanghao = {name: '王浩',age: 18,//给对象添加方法 方法名:函数play: function () {console.log('踢足球');},eat: function (food) {console.log(`吃${food}`);}}//调用对象的方法 对象名.方法名()wanghao.play()wanghao.eat('棉花糖')</script>
三、内置对象
回想一下我们曾经使用过的 console.log,console其实就是 JavaScript 中内置的对象,该对象中存在一个方法叫 log,然后调用 log 这个方法,即 console.log()。
除了 console 对象外,JavaScritp 还有其它的内置的对象
1.2、内置对象Math
- Math对象是JavaScript提供的一个“数学高手”对象
 - 提供了一系列做数学运算的方法
 方法由:
- random:生成0-1之间的随机数(包含0不包括1)
 - ceil:向上取整
 - floor:向下取整
 - max:找最大数
 - min:找最小数
 - pow:幂运算
 - abs:绝对值
 
<script>// console.log(Math.PI)//生成[0,1),0-1的随机数,包含0,不包含1let a = Math.random()console.log(a)//向上取整,整数加1,小数舍去 Math.ceil(数据)let b = Math.ceil(3.12)console.log(b)//向下取证 整数减1,小数舍去 Math.floor(数据)let c = Math.floor(3.24)console.log(c)//返回一组数的最大数let d = Math.max(12, 3, -4)console.log(d)//返回一组数的最小数let e = Math.min(12, 3, -4)console.log(e)//幂运算let f = Math.pow(2, 3)console.log(f)//绝对值 负数会变成正数let g = Math.abs(-13.2231)console.log(g)</script>
