JS基础(2~5)

JS基础 Day2

运算符

  • 赋值运算符

    • 对变量赋值

      • =:等号右边赋值给左边,左边是个容器

      • +=,-=,*=,/=,%=

  • 一元运算符

    • 二元、三元运算符

    • 自增:++

      • 前置自增:++i

      • 后置自增:i++

    • 自减:--

  • 比较运算符

    • >,<,>=,<=

    • ==(有隐式转换,只判断值),===(全等),!==

    • 字符串比较比的是ASCII码

    • NaN不等于任何值

  • 逻辑运算符

    • 解决多重条件判断

    • &&,||,!

    • 练习--判断一个数是4倍数且不是100倍数

      • <script>

        • let num = +prompt('输入数字:')

        • alert(num%4===0 && num%100!==0)

      • </script>

  • 运算符优先级

语句

  • 表达式和语句

    • 表达式可被求值,可写在赋值语句右侧;语句不一定有值

  • 分支语句

    • 程序三大流程控制语句

      • 顺序结构(从上往下)

      • 分支结构(条件选择)

      • 循环结构(重复执行)

    • 分支语句:有选择性执行代码

      • if分支语句

        • 单分支

          • if(条件) {...}

        • 双分支

          • if(条件) {...} else {...}

          • 练习--判断用户登录

            • // 用户输入

            • let uname = prompt('输入用户名:')

            • let pwd = prompt('输入密码:')

            • // 判断输出

            • if (uname==='pink' && pwd==='123') {

              • alert('成功登录')

            • } else {

              • alert('用户名或密码错误')

            • }

          • 练习--判断闰年

            • let year = +prompt('输入年份:')

            • if (year%4===0 && year%100!==0 || year%400===0) {

              • alert('${year}年是闰年')

            • } else {

              • alert('${year}年是平年')

            • }

        • 多分支

          • if(条件1) {...} else if(条件2) {...} else{...}

          • 练习--判断成绩

            • let score = +prompt('输入成绩:')

            • if(score >= 90) {

              • alert('很棒')

            • } else if(score >= 70) {

              • alert('良好')

            • } else{

              • alert('加油')

            • }

      • 三元运算符

        • 条件 ? 满足执行 : 不满足执行

        • 一般用来赋值

        • 练习--判断两个数最大值

          • let num1 = +prompt('输入第一个数')

          • let num2 = +prompt('输入第二个数')

          • num1>num2 ? alert(${num1}):alert(${num2})

        • 练习--数字补零

          • let num = prompt('输入数字:')

          • num = num<10 ? 0+num : num

          • alert(num)

      • switch语句

        • 语法:

          • switch(数据) {

            • case 值1:

              • 代码1

              • break

            • ......

            • default:

              • 代码n

              • break

          • }

        • 练习--简单计算器

          • let num1 = +prompt('输入第一个数:')

          • let num2 = +prompt('输入第二个数:')

          • let sp = prompt('输入+-*/其中一个:')

          • switch(sp) {

            • case '+':

              • alert(${num1+num2})

              • break

            • 同理......

            • default:

              • alert('输入不符合要求')

          • }

  • 循环语句

    • 断点调试

      • 位置:F12->sources一栏->选择代码文件

    • while循环

      • 语法:while(条件) {...}

      • 循环三要素:变量起始值、终止条件、变量变化量

    • 循环退出

      • break:退出循环

      • continue:结束本次循环,继续下次循环

      • 练习--页面弹出

        • while(true) {

          • let str = prompt('你爱我吗?')

          • if (str === '爱') {

            • break

          • }

        • }

综合案例--简易ATM取款机

  • let money = 100

  • while(true) {

    • let re = +prompt(`

      • 请你选择操作:

      • 1.存钱

      • 2.取钱

      • 3.查看余额

      • 4.退出

    • `)

    • if(re === 4) {

      • break

    • }

    • switch(re) {

      • case 1:

        • let cun = +prompt('输入存钱金额:')

        • money += cun

        • break

      • case 2:

        • let qv = +prompt('输入取款金额:')

        • money -= qv

        • break

      • case 3:

        • alert('余额是${money}')

        • break

    • }

  • }

JS基础 Day3

循环for

  • for循环基本使用

    • for(变量起始值 ; 终止条件 ; 变量变化量) { 循环体 }

    • 最大价值:循环数组

      • for(let i = 0; i < arr.length; i++) {

        • console.log(arr[i])

      • }

    • 退出循环:continue、break

    • 无限循环:while(true)、for(; ;)

  • 循环嵌套

    • 练习--九九乘法表

      • <head>

        • <style>

          • span {

            • display: inline-block;

            • width: 100px;

            • padding: 5px 10px;

            • border: 1px solid pink;

            • margin: 2px;

            • border-radius: 5px;

            • box-shadow: 2px 2px 2px rgba(225, 192, 203, .4);

            • bavkground-color: rgba(225, 192, 203, .1);

            • text-align: center;

          • }

        • </style>

      • </head>

      • <body>

        • <script>

          • for(let i=1; i<=9; i++) {

            • for(let j=1; j<=i; j++) {

              • document.write(`<span>$(j) X ${i} = ${i*j}</span>`)

            • }

            • document.write('<br>')

          • }

        • </script>

      • </body>

数组

  • 数组是什么

    • array一种按顺序保存数据的数据类型

  • 数组的基本使用

    • 声明数组

      • 字面量声明:let 数组名 = [数据1,数据2,...,数据n]

      • 构造函数声明:let arr = new Array(数据1,数据2,...,数据n)

    • 取值语法

      • 数组名[下标]

    • 遍历数组

  • 操作数组

    • 增:arr.push(新增内容)arr.unshift(新增内容)

    • 删:arr.pop()arr.shift()arr.splice(操作的下标, 删除的个数)

    • 改:数组[下标]=新值

    • 查:数组[下标]

    • 练习--数组筛选,放入新数组

      • let arr = [2,0,6,1,77,9,54,3,78,7]

      • let newArr = []

      • for(let i=0; i<arr.length; i++) {

        • if(arr[i] >= 10) {

          • newArray.push(arr[i])

        • }

      • }

      • console.log(newArr)

    • 练习--数组去0

  • 数组案例

综合案例--根据数据生成柱形图

  • <body>

    • <script>

      • let arr = []

      • for(let i=1; i<=4; i++) {

        • arr.push(prompt(`输入第${i}季度数据:`))

      • }

      • document.write(`<div class="box">`)

      • for(let i=0; i<arr.length; i++) {

        • document.write(`

          • <div style="height: ${arr[i]}px;">

            • <span> ${arr[i]}</span>

              • <h4>第 ${i+1}季度</h4>

          • </div>

        • `)

      • }

      • document.write(`</div>`)

    • </script>

  • </body>

  • 冒泡排序

    • let arr = [5,4,3,2,1]

    • for(let i=0; i<arr.length; i++) {

      • for(let j=0; j<arr.length-i-1; j++) {

        • if(arr[j]>arr[j+1]) {

          • let temp = arr[j]

          • arr[j] = arr[j+1]

          • arr[j+1] = temp

        • }

      • }

    • }

    • console.log(arr)

  • 数组排序

    • 升序

      • arr.sort(funtion(a,b)) {

        • return a-b

      • }

    • 降序

      • arr.sort(funtion(a,b)) {

        • return b-a

      • }

JS基础 Day4

函数

  • 为什么需要函数

    • 抽取-封装

    • 用于代码复用

    • 被设计为执行特定任务的代码块

  • 函数使用

    • 函数的声明语法:funtion 函数名() {函数体}

    • 命名规范

    • 函数的调用语法:函数名()

  • 函数传参

    • funtion 函数名(参数列表) {函数体}

    • 形参、实参

    • 参数默认值:让程序更严谨

    • 练习--函数求和

      • funtion getSum(x=0, y=0) {

        • document.write(x+y)

      • }

      • getSum(1,2)

    • 练习--求学生总分

      • funtion getArrSum(arr=[]) {

        • let sum = 0

        • for(let i=0; i<arr.length; i++){

          • sum+=arr[i]

        • }

        • console.log(sum)

      • }

      • getArrSum([1,2,3,4,5])

  • 函数返回值

    • 把处理结果返回给调用者

    • 语法:return 数据

    • 练习--输出数组最值

      • funtion getArrValue(arr = []) {

        • let max = arr[0]

        • let min = arr[0]

        • for(let i=1; i<arr.length; i++) {

          • if(max<arr[i]) {

            • max=arr[i]

          • }

          • if(min>arr[i]) {

            • min=arr[i]

          • }

        • }

        • return [max, min]

      • }

      • let newArr = getArrValue([11,3,55,7,29])

      • console.log(`数组的最大值是:${newArr[0]}`)

      • console.log(`数组的最小值是:${newArr[1]}`)

  • 作用域

    • 可用性的代码范围

    • 全局作用域(全局有效)、局部作用域(局部有效)

    • 全局变量、局部变量

    • 特殊情况

      • 函数内部,变量没声明,直接赋值,当全局变量

      • 函数内部的形参可以看做局部变量

    • 变量访问原则:就近原则

  • 匿名函数

    • 具名函数、匿名函数funtion() { }

    • 使用方法

      • 函数表达式:let fn = funtion() { }

        • 将匿名函数赋值给变量,通过变量名调用fn()

        • 先声明,再调用

        • 后期web API会使用

      • 立即执行函数:(两种写法,一定要分号)

        • (funtion(形参){代码})(实参);

        • (funtion(){}());

        • 避免全局变量之间污染

综合案例--转换时间

  • 需求:输入秒数,转换为时分秒

  • 代码:

    • let second = +prompt('输入秒数:')

    • funtion getTime(t) {

      • let h = parseInt(t/60/60%24)

      • let m = parseInt(t/60%60)

      • let s = parseInt(t%60)

      • h = h<10 ? '0'+h : h

      • m = m<10 ? '0'+m : m

      • s = s<10 ? '0'+s : s

      • return '转换完毕之后是${h}小时${m}分${s}秒'

    • }

    • let str = getTime(second)

    • document.write(str)

  • 逻辑中断

    • 类似参数默认值的写法

      • funtion getSum(x,y) {

        • x=x||0

        • y=y||0

        • console.log(x+y)

      • }

      • getSum(1,2)

    • 逻辑运算符里的短路:只存在于&&(一假则假)和||(一真则真)中

  • 转换为boolean型

    • 显示转换:Boolean()

      • ''(空)、0、undefined、null、false、NaN转换为布尔值后是false

JS基础 Day5

对象

  • 什么是对象

    • object,JS里的一种数据类型,可理解成一种无序的数据集合

  • 对象使用

    • 对象声明

      • let 对象名={}

      • let 对象名=new Object()

    • 由属性和方法组成

      • let 对象名 = {

        • 属性名: 属性值 ,

        • 方法名: 函数

      • }

    • 对象使用

      • 增:对象名.新属性名=新值

      • 删:delete 对象名.属性名

      • 改:对象.属性=值

      • 查:对象.属性(对多词或-等属性,用:对象['属性']

    • 对象中的方法

      • 本质是函数

      • 方法由方法名和函数两部分组成,之间用“:”分隔

      • 方法调用:obg.方法名(参数)

  • 遍历对象

    • for(let k in obj) {...} //结果是字符串

    • for(let k in obj) { //属性名 'uname'(带引号)即'uname'===k

      • console.log(obj[k])

    • } //获得对象属性是k,获得对象值是obj[k]

    • 练习--遍历数组对象

      • let students = [

        • {name:'小明',age:18,gender:'男'},

        • {name:'小红',age:19,gender:'女'},

        • {name:'小刚',age:17,gender:'男'},

      • ]

      • for(let i=0; i<students.length; i++){

        • console.log(students[i].name)

      • }

  • 内置对象

    • 是什么

    • 内置对象Math

      • ceil、floor、round、max、min、abs、pow...

    • 生成任意范围随机数

      • Math.random() //取值[0,1)

      • 随机取数组:

        • let arr = ['red', 'green', 'blue']

        • let random = Math.floor(Math.random()*arr.length)

        • console.log(arr[random])

        • //改进,不重复

        • arr.splice(random, 1)

        • console.log(arr)

      • 生成N~M之间的整数:Math.floor(Math.random()*(M-N+1))+N

      • 练习--猜数字游戏

        • funtion getRandom(N, M) {

          • return Math.floor(Math.random()*(M-N+1))+N

        • }

        • let random = getRandom(1, 10)

        • console.log(random)

        • while(true) { //若设置了次数,就用for循环

          • let num = +prompt('输入你猜的数字:')

          • if(num>random) {

            • alert('猜大了')

          • }else if(num<random) {

            • alert('猜小了')

          • }else {

            • alert('猜对了')

            • break

          • }

        • }

      • 练习--生成随机颜色

        • funtion getRandomColor(flag=true) {

          • if(flag) {

            • let str='#'

            • let arr=['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f']

            • for(let i=1; i<=6; i++) {

              • let random=Math.floor(Math.random()*arr.length)

              • str+=arr[random]

            • }

            • return str

          • } else {

            • let r = Math.floor(Math.random()*256)

            • let g = Math.floor(Math.random()*256)

            • let b = Math.floor(Math.random()*256)

            • return `rgb(${r},${g},${b})`

          • }

        • }

        • console.log(getRandomColor(false))

        • console.log(getRandomColor(true))

        • console.log(getRandomColor())

  • null也是JS数据类型的一种,通常用它表示不存在的对象

综合案例--学成在线页面渲染案例

拓展

  • 简单类型(基本数据类型)(值类型)

  • 复杂类型(引用类型)

    • 通过new创建的对象,如Object、Array、Data等

    • 在栈空间存地址,真正的对象实例存放在堆空间中

  • 堆栈空间分配

    • 栈:值,存放简单数据类型

    • 堆:存放复杂数据类型(对象)


JS基础(2~5)
http://localhost:8090//archives/jsji-chu-2
作者
江敏婕
发布于
2024年10月18日
许可协议