JavaScript基础语法

一、理解变量是存储数据的“容器”

1.JavaScript介绍

1)JavaScript是什么

a.JavaScript(是什么?)

是一种运行在客户端(浏览器)的编程语言,实现人机交互效果

b.作用(做什么?)

------网页特效(监听用户的一些行为让网页做出对应的反馈)

------表单验证(针对表单数据的合法性进行判断)

------数据交互(获取后台的数据,渲染到前端)

------服务器编程(node.js)

c.JavaScript的组成(有什么?)

----ECMAScript:

规定了js基础语法核心知识,比如变量、分支语句、循环语句、对象等等

---- Web APIs:

DOM 操作文档,比如对页面元素进行移动、大小、删除添加等操作

BOM 操作浏览器,比如页面弹窗,检测窗口宽度、存储数据到浏览器 

2)JavaScript书写位置

a.内部JavaScript

直接写在html文件里,用script标签包住

规范:script标签写在</body>上面

拓展:alert('你好,js')页面弹出警告对话框

<body>
    <!-- 内部js -->
    <script>
        // 页面弹出警示框
        alert('你好,js')
    </script>
</body>

 b.外部JavaScript

代码写在以.js结尾的文件里

语法:通过script标签,引入到html页面中。

js代码:

alert('我是外部的js')

html外部引入js代码:

<body>
    <script src="js/my.js">
        // 里面不要写任何的东西
    </script>
</body>

c.内联JavaScript

代码写在标签的内部

语法:

​​​​​​​ 

3)JavaScript的注释

目标:了解JavaScript注释写法以及结束符通俗写法

注释:

a.单行注释:

符号://

作用:右边这一行的代码会被忽略

mac快捷键:command+/

b.块注释:

符号:/* */

作用:在/* 和 */之间的所有内容都会被忽略

mac中的快捷键:option+shift+A

4)JavaScript的结束符

a.作用:使用英文的;代表语句结束

b.实际情况:实际开发中,可写可不写,浏览器(JavaScript)可以自动推断语句的结束位置

c.现状:在实际开发中,越来越多的人主张,书写JavaScript代码时省略结束符

d.约定:为了风格统一,结束符要么每句都写,要么每句都不写(按照团队要求)

5)输入和输出语句

​​​​​​​a.目标:能写出常见JavaScript输入输出语法

b.什么是语法:

人和计算机打交道的规定约定

c.输入和输出也可理解为和和计算机的交互,用户通过键盘、鼠标等向计算机输入信息,计算机处理后再展示结果给用户,这便是一次输入和输出的过程

d.输出语法:

        // 1.文档输出内容
        document.write('我的div标签');
        document.write('<h1>我的div标签</h1>');

      // 2.警示框输出内容
        alert('我是一个警示框')

 

 e.输入语句

>语法:prompt('请输入您的姓名")

> 作用显示一个对话框,对话框包含一条文字信息,用来提示用户输入文字

        // 4.输入语句
        prompt('请输入您的年龄')

f.案例作业

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        alert('你好 JS~')
        document.write('JavaScript 我来了!')
        console.log('它~会魔法吧~')
    </script>
</body>
</html>

g.JavaScript代码执行的顺序

按HTML文档流顺序执行JavaScript代码

alert()和prompt()他们会跳过页面渲染先被执行(目前作为了解) 

6)字面量

a.目标:能说出什么是字面量

b.在计算机科学中,字面量(literal)是在计算机中描述 事/物

比如:我们的工资是:1000 此时1000就是字面量

'prestige'字符串字面量

还有接下来我们学的[]数组字面量 {}对象字面量等等

2.变量

2.1变量是什么

1)问题1:用户输入的数据我们如何存储起来?

     答:变量

2)变量是什么?

a.目标:能够理解变量是计算机存储数据的“容器”

b.变量:

白话:变量就是一个装东西的盒子

通俗:变量是计算机中用来存储数据的“容器”,他可以让计算机变得有记忆

注意:变量不是数据本身,他们仅仅是一个用于存储数据的容器,可以理解为一个一个用来装东西的纸箱子

 3)总结:

变量是怎么理解的?

计算机中用来存储数据的“容器”,简单理解是一个个的盒子

变量有什么作用?

用来存储数据的,注意变量指的是容器而不是数据

你还能想到哪些生活中的变量?

HTML标签、教室、宿舍.....

2.2变量基本使用

1)目标:能够声明一个变量并完成赋值操作

2)变量的声明

a.要想使用变量,首先需要创建变量(也称为声明变量或者定义变量)

b.语法:

let 变量名;

c.声明变量由两部分构成:声明关键字、变量名(标识)

d.let即关键字(let 允许、许可、让),所谓关键字是系统提供的专门用来声明(定义)变量的词语

e.举例:

let age

3)变量的赋值

a.定义了一个变量后,你就能够初始化它(赋值),在变量名之后加一个“=”,然后是数值。

b.简单点,也可以声明变量的时候直接完成赋值操作,这种操作也称为变量初始化

    <script>
        //1.声明一个年龄变量
        let age

        // 2.赋值 =
        age = 18
        console.log(age)

        // 3.声明的同时直接赋值, 变量的初始化
        let sum = 200
        console.log(sum)
    </script>

c.练习

需求:

声明1个变量,用于存放用户购买的商品数量(num)为20件

声明1个变量,用于存放用户的姓名(uname)为"张三“

依次控制台打印输出两个变量

    <script>
        let num = 20;
        let uname = '张三'
        console.log(num)
        console.log(uname)
    </script>

 4)更新变量:

变量赋值后,还可以通过简单地给它一个不同的值来更新它。

    <script>
        let age = 18;
        age = 19;
        console.log(age);
    </script>

注意:let不允许多次声明一个变量

5)声明多个变量:

变量赋值以后,还可以通过简单地给它一个不同的值来更新它。

语法:多个变量之间用逗号隔开。

let age = 18,uname = 'pink'

    <script>
        // 声明多个变量
        // let age = 18, uname = 'prestige'
        // console.log(age,uname)
        // 提倡声明的方式
        let age = 20
        let uname = 'prestige'
        console.log(age,uname)
    </script>

 6)输出用户名案例

    <script>
        // 1.用户输入
        // 2.内部处理保存函数
        let uname = prompt('请输入姓名')
        // 3.打印输出
        document.write(uname)
    </script>

7)交互案例---交换两个变量的值

需求:有两个变量,num1里面放的值是10,num2里面放的值是20

最后变为num1里面放的值是20,num2里面放的值是10

    <script>
        let num1 = 10
        let num2 = 20
        let temp
        temp = num1
        num1 = num2
        num2 = temp
        console.log(num1,num2)
        let uname1 = 'prestige'
        let uname2 = '杨紫'
        temp = uname1
        uname1 = uname2
        uname2 = temp
        console.log(uname1,uname2)
        
    </script>

2.3变量的本质

1)目标:能够说出变量的本质是什么

2)内存:计算机中存储数据的地方,相当于一个空间

3)变量本质:是程序在内存中申请的一块用来存储数据的小空间

2.4变量命名规则与规范

1)目标:能写出符合规范的变量名

2)规则:必须遵守,不遵守报错(法律层面)

     规范:建议,不遵守不会报错,但不符合业内通识(道德层面)

3)规则:

a.不能用关键字:关键字含义的字符,javaScript内置的一些英语词汇,例如:let,var,if,for等

b.只能用下划线、字母、数字、$组成,且数字不能开头

c.字母严格区分大小写,如Age和age是不同的变量

4)规范:

a.起名要有意义

b.遵守小驼峰命名法:第一个单词首字母小写,后面每个单词首字母大写,例如:userName

5)案例:

    <script>
        let uname = prompt('请输入您的姓名')
        let age = prompt('请输入您的年龄')
        let gender = prompt('请输入您的性别')
        document.write(uname,age,gender)
    </script>

6)let和var的区别

a.在较旧的javaScript,使用关键字var来声明变量,而不是let

b.var现在开发中一般不再使用,只是我们可能在老版程序中看到它

c.let为了解决var的一些问题

d.var声明:

可以先使用在声明(不合理)

var声明过的变量可以重复声明(不合理)

比如变量提升、全局变量、没有块级作用域等等

e.结论:

var就是一个bug,别迷恋它,以后声明变量我们统一用let

7)数组的基本使用

a.数组(Array)----一种将一组数据存储在单个变量名下的优雅方式

b.声明语法

let 数组名 = [数据1,数据2,数据3]

数组是按顺序保存,所以每个数据都有自己的编号,计算机从0开始,依次类推,在数组中,数据的编号也叫索引或下标,数组可以存储任意类型的数据

c.取值语法

数组名[下标]

d.数据取值案例

需求:定义一个数组,里面存放星期一、星期二、直到星期日,打印出星期日

        let weeks = ['星期一','星期二','星期三','星期四','星期五','星期六','星期日'];
        console.log(weeks[6]);
        // 数组的长度等于索引号加1
        console.log(weeks.length)

e.一些术语

元素:数组中保存的每个数据都叫做数组元素

3.常量

1)概念:使用const声明的变量称为“常量”

2)使用场景:当某个变量永远不会改变的时候,就可以使用const来声明,而不是let

3)命名规范:和变量一致

4)常量使用:

    <script>
        // 常量 不允许更改值
        const PI = 3.14
        console.log(PI)
        PI = 3.15
        console.log(PI)
        // 常量声明的时候必须赋值
    </script>

5)注意:常量不允许重新赋值,声明的时候必须赋值(初始化)

小技巧:不需要重新赋值的数据使用const

6)let - 现在实际开发变量声明方式

     var-----以前的声明变量的方式,会有很多问题

    const ---类似于let,但是变量的值无法被修改

4.数据类型

1)数据类型

a.目标:能说出JS中基本数据类型有哪些

b.JS数据类型整体分为两类

基本数据类型

引用数据类型

c.数据类型-----数字类型(Number)

》即我们数学中学习到的数字,可以是整数、小数、正数、负数

〉JavaScript中的正数、负数、小数等统一称为数字类型

》JS是弱数据类型,变量到底属于哪种类型,只有赋值以后才能确认

d.算术运算符-----包括加、减、乘、除、取余(求模 )

乘、除、取余优先级相同

乘、除、取余优先级大于加、减

e.计算圆的面积,对话框输出圆的半径,算出圆的面积并显示到页面

    <script>
        let r = prompt('请输入圆的半径')
        let s = 3.14 * r * r
        document.write(s)
        // 当计算错误的时候会报这个错误
        // NaN not a number
        // NaN 是粘性的,跟任何的数据进行操作都是NaN
    </script>

f.数据类型---字符串类型(string)

> 通过单引号(''),双引号("")或反引号(‘)包裹的数据都叫做字符串,单引号和双引号没有本质的区别,推荐使用单引号。

> 注意事项

无论单引号或是双引号必须成对使用

单引号/双引号可以互相嵌套,但是不以自己嵌套自己(口诀:外双内单,或者外单内双)

必要时可以使用转义字符\,输出单引号或者双引号

    let str = 'prestige'
        console.log(11)
        console.log(str)
        console.log('str')
        console.log('11')
        // 空字符串
        let st1 = ''
        // 如果外面是单引号的里面要放双引号
        console.log('我是"prestige"')
        console.log('我是\'prestige\'')

> 字符串拼接

场景:+运算符 可以实现字符串的拼接

口诀:数字相加,字符相连

        // 字符串拼接
        console.log(1 + 3)
        console.log('pink'+'prestige')
        let uname = '刘德华'
        let water = '水'
        let age = 18
        // 有一个字符串+就是拼接,数字可以和字符串进行拼接
        document.write('我今年'+age+'岁了')

》模版字符串

拼接字符串和变量

在没有他之前,要拼接变量比较麻烦

语法

a.反引号(``)

在英文输入模式下按键盘的tab键上方的那个键(1的左边的那个键,这个键就是反引号)

内容拼接变量时,用${}保住变量

        // 模版字符串  字符串用反引号包裹
        document.write(`我今年${age}岁了`)

> 模版字符串案例

    <script>
        let name = prompt('请输入您的姓名')
        let age = prompt('请输入您的年龄')
        document.write(`大家好,我叫${name},今年${age}岁了`)
    </script>

 g.布尔类型(boolean)

    <script>
        // true false 是布尔类型字面量
        let isCool = false
        console.log(isCool)
        
    </script>

h.数据类型----未定义类型(undefined)

> 未定义是比较特殊的类型,只有一个值underfined

> 什么情况出现未定义类型?

只声明变量,不赋值的情况下,变量的默认值是undefined,一般很少【直接】为某个变量赋值为undefined 

工作中的使用场景:

我们开发中经常声明一个变量,等待传送过来的数据

如果我们不知道这个数据是否传递过来,此时我们可以通过检测这个变量是不是undefined,就判断用户是否有数据传递过来

g.数据类型----null(空类型)

JavaScript中的null仅仅是一个代表“无”,“空”或“值未知”的特殊值

let obj = null

console.log(obj)

null和undefined区别:

undefined表示没有赋值

null表示赋值了,但是内容为空

》null开发中的使用场景

官方解释:把null作为尚未创建的对象

大白话:将来有个变量里面存放的是一个对象,但是对象还没创建好,可以先给个null

   <script>
        // 1.true false 是布尔类型字面量
        let isCool = false
        console.log(isCool)

        // 2.未定义类型  弱数据类型,声明一个变量未赋值就是undefined
        let num 
        console.log(num)

        // 3.null 空的
        let obj = null
        console.log(obj)

        // null和undefined的区别
        // 计算有区别
        console.log(undefined + 1)
        console.log(null + 1)
    </script>

2)监测数据类型

通过typeof关键字检测数据类型

typeof运算符可以返回被检测的数据类型,它支持两种语法格式

》作为运算符:typeof x(常用的写法)

> 函数形式:typeof(x)

    <script>
        let num = 10
        console.log(typeof num)
        let str = 'prestige'
        console.log(typeof str)
        let str1 = '10'
        console.log(typeof str1)
        let flag = false
        console.log(typeof flag)
        let un
        console.log(typeof un)
        let obj = null
        console.log(typeof obj)
    </script>

5.类型转换

5.1为什么要进行类型转换

1)JavaScript是弱数据类型,JavaScript也不知道变量到底属于哪一种数据类型,只有赋值了才清楚

2)坑:使用表单、prompt获取过来的数据默认是字符串类型的,此时就不能简单的进行加法运算

3)此时需要转换变量的数据类型,通俗来说就是把一种数据类型转换成我们需要的数据类型

5.2隐式转换

某些运算符被执行时,系统内部自动将数据类型进行转换,这种转换称为隐式转换

规则:

1)+号两边只要有一个是字符串,都会把另外一个转成字符串

2)除了+号以外的算术运算符,比如-*/等都会把数据转成数字类型

缺点:

转换类型不明确,靠经验才能总结

小技巧:

+号作为正号解析可以转换成数字型

任何数字与字符串相加结果都是字符串

5.3显式转换

1)编程的时候过度依赖系统内部的隐式转换是不严谨的,因为隐式转换规律并不清晰,大多是靠经验总结的规律,为了避免因隐式转换带来的问题,通常需要对数据进行显示转换

2)自己写代码告诉系统该转成什么类型

3)转换为数字

a.Number(数据)

转成数字类型,如果字符串内容里有非数字,转换失败时结果为NaN(Not a Number)即不是一个数字。NaN也是number类型的数据,代表非数字

b.parseInt(数据)

只保留整数

c.parseFloat(数据)

可以保留小数部分

    <script>
        // 一般都是把数字的字符串转换为数字类型
        let str = '123'
        console.log(Number(str))
        console.log(Number('pink'))
        let num = prompt('输入年薪')
        console.log(Number(num))
        let num1 = +prompt("请输入您的年薪")
        console.log(num1)
        //把字符串转换成数字,不要px
        console.log(parseInt('12px'))  //12
        // 不会四舍五入,直接取整数部分
        console.log(parseInt('12.85px'));  //12
        console.log(parseFloat('12.94'))
    </script>

4)计算两数之和

    <script>
        let num = Number(prompt('请输入第一个数:'))
        let num1 = +prompt('请输入第二个数:')
        alert(`两个数之和为:${num + num1}`)
    </script>

6.实战案例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        h2 {
            text-align: center;
        }
        
        table {
            /* 合并相邻边框 */
            border-collapse: collapse;
            height: 80px;
            margin: 0 auto;
           
        }
        
        th {
            padding: 5px 30px;
        }

        table,
        th,
        td {
            border: 1px solid #000;
        }
    </style>
</head>
<body>
    <h2>订单确认</h2>
   

    <script>
        // 1.用户输入
        let price = +prompt('请输入商品的价格:')
        let num = +prompt('请输入商品数量:')
        let address = prompt('请输入收货地址:')
        // 2.计算总额
        let total = price * num

        // 3.页面打印渲染
        document.write(`
        <table>
        <tr>
            <th>商品名称</th>
            <th>商品价格</th>
            <th>商品数量</th>
            <th>总价</th>
            <th>收获地址</th>
        </tr>

        <tr>
            <th>小米手机青春PLUS</th>
            <th>${price}元</th>
            <th>${num}</th>
            <th>${total}</th>
            <th>${address}</th>
        </tr>

    </table>
        `)
    </script>
</body>
</html>

二、理解什么是数据并知道数据的分类

1.运算符

1)赋值运算符

a.目标:能够使用赋值运算符简化代码

b.赋值运算符:对变量进行赋值的运算符

已经学过的赋值运算符:= 将等号右边的值赋值给左边,要求左边必须是一个容器

其他赋值运算符:+=      -=        *=       /=        %=

    <script>
        let number = 1;
        console.log(number)
       number = number + 1
       number += 1
       console.log(number)
    </script>

2)一元运算符

a.目标:能够使用一元运算符做自增运算

b.众多javaScript的运算符可以根据所需表达式的个数,分为一元

3)比较运算符
4)逻辑运算符
5)运算符优先级

2.语句

3.综合案例

三、知道JavaScript数据类型转换的特征

四、函数的使用

1.为什么需要函数

代码复用

1)函数:

function,是被设计为执行特定任务的代码块

2)说明:

函数可以把具有相同或相似逻辑的代码“包裹”起来,通过函数调用执行这些被“包裹”的代码逻辑,这么做的优势是有利于精简代码方便复用

比如我们之前学的alert(),prompt()和console.log()都是一些js函数,只不过已经封装好了,我们直接使用。

2.函数使用

1)目标:掌握函数语法,把代码封装起来

2)函数的声明语法

 函数的命名规范:

和变量名命名基本一致

尽量小驼峰式命名法

前缀应该为动词

命名建议:常用动词约定

3)函数的调用

函数名()

4)案例

    <script>
        // 1.求俩个数的和
        function getSum() {
            let num1 = +prompt('请输入第一个数:')
            let num2 = +prompt('请输入第二个数:')
            console.log(num1+num2)
        }
        getSum()
        // 2.求1~100之间的和
        function getSum1() {
            let sum = 0
            for(let i = 0; i <= 100; i++) {
                sum += i
            }
            console.log(sum)
        }
        getSum1()
    </script>

​​​​

3.函数传参

1)声明语法

参数列表:

传入数据列表,声明这个函数需要传入几个数据,多个数据用逗号隔开

2)调用语法

 方法名(参数)

3)参数

a.参数分为实参和形参

b.形参可以理解为是在这个函数内声明的的变量,实参可以理解为是给这个变量赋值

c.开发中尽量保持形参和实参个数一致

        function getSum(start,end) {
            console.log(end);
            let sum = 0
            for(let i = start; i <= end; i++) {
                sum += i
            }
            console.log(sum)
        }
        // getSum(50)
        // getSum(100)
        getSum(1,50)  //实参 -- 实际的参数     调用的小括号里面
        getSum(100,101)     //实参

d.如果一个函数有两个参数,但是没有传值,那么就会是undefined+undefined,是NAN,那么可以给形参默认值,可以默认为0 

说明:这个默认值只会在缺少实参参数传递时才会被执行,所以有参数不会被执行


        // 两数求和
        function getTwoAdd(num1,num2) {
            document.write(num1+num2)
        }
        getTwoAdd(10,20)
        getTwoAdd()

        function getAdd(x = 0, y = 0) {
            document.write(x + y)
        }

        getAdd()

4)案例---求一个学生的成绩
    <script>
        // 学生的分数是一个数组,计算每个学生的总分
        // 给一个参数的默认值
        function addScore(arr = []) {
            let sum = 0;
            for(let i = 0; i < arr.length; i++) {
                 sum += arr[i]
            }
            console.log(sum)
        }
        addScore([123,145,80,30,60])
        addScore([11,22,33])
        addScore()
    </script>

4.函数返回值

1)其实我们前面已经接触了很多的函数具备返回值

let result = parseint('111)

只是这些函数已经内置好了,我们直接使用就可以

2)当函数需要返回数据出去时,用return关键字

return 数据

    <script>
        // 函数的返回值
        function fn() {
            return 20
        }
        // 相当于执行了 fn() = 20
        fn()
       
        console.log(fn())
        let result = fn()
        console.log(result)
    </script>

a.在函数体内使用return关键字能将内部的执行结果交给函数外部使用

b.return后面的代码不会被执行,会立即结束当前函数,所以retuen后面的数据不要换行写

c.return函数可以没有return,这种情况函数默认返回值为undefined

d.两个相同的函数后面的函数会覆盖掉前面的函数

e.在javaScript中,实参的个数和形参的个数可以不一致

如果形参过多,会自动填上undefined(了解即可)

如果实参过多,那么多余的实参会被忽略(函数内部有一个arguments,里面装着所有的实参)

f.函数一旦碰到return就不会在往下执行了,函数的结束用return

3)求最大值和最小值,如果返回的话那么就需要返回一个数组
    //   2.求任意数组中最大值和最小值并返回最大值和最小值
    function getMaxArr(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 maxArr = getMaxArr([1,5,3,7,4])
   console.log(maxArr)
4)断点调试
在网页中打开检查,然后选择sources,点击网页,然后给要加断点的地方加断点,点击上面的执行就可以执行

5.作用域

1)定义

通常来说,一段程序代码中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域

2)作用域的使用提高了程序的局部性,增强了程序的可靠性,减少了名字冲突

    <script>

        // 全局变量
        let num = 10
        console.log(num)
        function fn() {
            console.log(num)
        }

        // 局部变量
        function fun() {
            let str = 'pink'
        }
        console.log(str)
    </script>

 3)变量的特殊情况

> 变量有一个坑,特殊情况:

如果函数内部,变量没有声明,直接赋值,也当全局变量看,但是强烈不推荐

但是有一种情况,函数内部的形参可以看作是局部变量

4)变量的访问规则

a.只要是代码,就至少有一个作用域

b.写在函数内部的局部作用域

c.如果函数中还有函数,那么在这个作用域中就又诞生一个作用域

d.访问原则:在能够访问到的情况下,先局部,局部没有在找全局

e.访问规则:采取就近原则的方式来查找最终的值

6.匿名函数

 1)匿名函数

没有名字的函数,无法直接调用

2)使用方式

a.函数表达式

将匿名函数赋值给一个变量,并且通过变量名称进行调用,我们将这个称为函数表达式

语法:

    <script>
        // 无参匿名函数
       let fn = function() {
            console.log('我是函数表达式')
        }
        fn()

        // 有参匿名函数
       let fn1 = function(x, y) {
        console.log(x + y)
        return x + y
       }

       fn1(4, 5)
       let sum = fn1(4,5)
       console.log(sum)

    //    函数表达式和具名函数的不同   function fn() {}
    // 具名函数的调用可以写到任何位置,函数表达式必须先声明函数表达式后调用

    // 
    </script>

b.立即执行函数

场景介绍:避免全局变量之间的污染

语法:

 注意:多个立即执行函数要用;隔开,要不然会报错

    <script>

        // 第一种写法
        (function() {
            console.log(11);
        })();

        (function(){
            console.log('我是立即执行函数');
        })();
       
        (function(x,y){
          console.log(x + y)
        })(1,3);

        // 第二种写法
       (function(x,y){
        console.log(x + y)
       }(1,3))
    </script>

​​​​​​​7.逻辑中断

1)逻辑运算符里的短路

短路:只存在于&&和||中,当满足一定条件会让右边的代码不执行

原因:通过左边能得到整个式子的结果,因此没必要再判断右边

运算结果:无论&& 还是||,运算结果都是最后被执行的表达式值,一般用在变量赋值 

    <script> 
        function fn(x, y) {
            // undefined + undefined是NaN
            // undefined当做假看
            x = x || 0
            y = y || 0
            console.log(x + y)

        }
        fn(1,2)
        fn()
        console.log(false && age++) //age++不执行,一假则假,后面就不执行了
        console.log(11 || age ++)  // 一真则真,11是真值,后面就不再执行了
        console.log(11 && 22)  //输出22,两个都为真,执行最后的
        console.log(11 || 22)  //输出11,第一个为真,后面不执行
    </script>

8.转换为Boolean

1.显示转换

记忆:‘’、0、undefined、null、false、NaN转换为布尔值之后都是false,其余则为true

    <script>
        // 空字符串为假,其余字符串为真
        console.log(Boolean('prestige'))
        console.log(Boolean(''))

        console.log(undefined && 20)  //undefined
        console.log(null && 20)     //null
        console.log(0 && 20)  // 0
    </script>

2.隐式转换 

 1)有字符串的加法""+1,结果为1

2)减法(像大多数数学运算一样)只能用于数字,他会使所有字符串“”转换为0

3)null经过数字转换之后会变为0

4)undefined经过数字转换之后会变为NaN

五、对象

知道对象数据类型的特征,具备对象数组数据渲染页面的能力

学习路径:

1.什么是对象?

1.1 对象是什么?

对象(Object):JavaScript里的一种数据类型

可以理解为是一种无序的数据集合,注意数组是有序的数据集合

1.2 对象有什么特点?

1)无序的数据的集合

2)可以详细的描述某个事物

2.对象使用

2.1对象声明语法

{}是对象字面量

2.2 对象使用 

对象由属性和方法组成

1)属性:信息或叫特征(名词),比如 手机尺寸、颜色、重量等

2)方法:功能或者行为(动词),比如 手机打电话、发短信、玩游戏

2.3属性 

1)数据描述性的信息称为属性,如人的姓名、身高、年龄、性别等,一般都是名词性的。

2)属性都是成对出现的,包括属性名和值,他们之间使用英文:分隔

3)多个属性之间使用英文,隔开

4)属性就是依附在对象上的变量(外面是变量,对象内是属性)

5)属性名可以使用““或”,一般情况下省略,除非名称遇到特殊符号如空格、中横线等

2.4 对象增删改查

1)属性-查

》 声明对象,并添加了若干个属性后,可以使用.获得对象中属性对应的值,称之为访问属性

〉语法:对象名.属性

》 简单理解就是获得对象里面的属性值

   <script>

    // 1.声明对象
    let pink = {
        uname: 'pink',
        age: 18,
        gender: '女'
    }
    console.log(pink)
    console.log(typeof pink)

    //1.声明
    let goods = {
        name:'小米10 青春版',
        num: '100012816024',
        weight: '0.55kg',
        address:'中国大陆'

    }
    console.log(goods)

    //2. 使用属性 查 对象名.属性名
    console.log(goods.address)
    console.log(goods.name)
   </script> 

 2)属性-改

》 语法:对象名.属性 = 新值

 // 1.声明对象
    let pink = {
        uname: 'pink',
        age: 18,
        gender: '女'
    }

    // 把性别的女改为男
    pink.gender = '男'

3)属性-增

》语法:对象名.新属性 = 新值

    // 1.声明对象
    let pink = {
        uname: 'pink',
        age: 18,
        gender: '女'
    }

    // 把性别的女改为男
    pink.gender = '男'
    pink.hobby = '足球'

4)属性-删

语法:delete 对象名.属性名

    // 1.声明对象
    let pink = {
        uname: 'pink',
        age: 18,
        gender: '女'
    }

    // 把性别的女改为男
    pink.gender = '男'
    pink.hobby = '足球'
    delete pink.age

改和增语法一样,判断标准就是对象有没有这个属性,没有进行新增,有就是改

2.5 查的两种写法

1)对象名.属性名

  // 1.声明对象
    let pink = {
        uname: 'pink',
  
    }
   pink.uname

2) 对象名['属性名']

    let goods = {
        'goods-name':'小米10 青春版',

    }
    // 查的另外一种属性 对象名【属性名】
    console.log(goods['goods-name'])
2.6 对象中的方法

1)数据行为性的信息称为方法,如跑步、唱歌等,一般都是动词性的,其本质是函数

2)方法是由方法名和函数两部分构成的,他们之间使用:隔开

3) 多个属性之间使用,分隔

4)方法是依附在对象中的函数

5)方法名可以使用""或'',一般情况下省略,除非名称遇到特殊符号如空格、中横线等

6) 声明对象,并添加了若干个方法后,可以使用、调用对象中的函数,我们称之为方法调用

7)也可以添加形参和实参

8)注意:千万别忘了给方法名后面加小括号

    <script>
        let obj = {
            uname: '刘德华',
            song:function(x,y) {
                console.log('冰雨')
                console.log(x + y)
            }
        }

        // 方法的调用
        obj.song(1,2)
        document.write()

    </script>

3.遍历对象

1)一般不用这种方式遍历数组,主要是用来遍历对象

2)for in语法中的k是一个变量,在循环的过程中依次代表对象的属性名

3)由于k是变量,所以必须使用[]语法解析

4)一定记住:k是获得对象的属性名,对象名[k]是获得属性值

    <script>
        let arr = ['pink','red','blue']

        // 很少用字符串遍历数组,不推荐遍历数组
        for(let k in arr) {
            // k打印的是数组的下标,是字符串类型的
            console.log(k)
            console.log(arr[k])
        }

        // 遍历对象 for in
        let obj = {
            uname: 'prestige',
            age: 18,
            gender:'男'
        }
        for(let k in obj) {
            // k是属性名
            console.log(k); //'uname' 'age'
            console.log(obj[k]);
        }
    </script>

5)遍历数组对象

4.内置对象

4.1 目标:

学会调用JavaScript为我们准备好的内置对象

4.2 内置对象是什么

1)JavaScript内部提供的对象,包含个数属性和方法给开发者调用

2)document.write()

3)console.log()

4.3 内置对象Math

1)介绍:Math对象是JavaScript提供的一个“数学”对象

2)作用:提供了一系列做数学运算的方法

3)Math对象包含的方法有:

random:生成0-1之间的随机数(包含0不包含1)

ceil:向上取整

floor:向下取整

max:找最大数

min:找最小数

pow:幂运算

abs:绝对值

MDN Web Docs

4.4 生成任意范围随机数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript基础语法包括数据类型、运算符、选择结构和循环结构。在JavaScript中,所有的类型都是用var关键字来修饰,但实际中还是有类型区分的。常见的数据类型包括字符串、数字、布尔值、对象和数组等。 运算符用于进行数学运算和逻辑判断。常见的运算符包括加法运算符(+)、减法运算符(-)、乘法运算符(*)、除法运算符(/)、取余运算符(%)等。逻辑运算符包括与运算符(&&)、或运算符(||)、非运算符(!)等。 选择结构用于根据条件执行不同的代码块。常见的选择结构有if语句、switch语句。if语句根据条件是否为真来执行相应的代码块,switch语句根据表达式的值来选择执行的代码块。 循环结构用于重复执行一段代码。常见的循环结构有for循环、while循环和do-while循环。for循环在指定条件为真的情况下重复执行代码块,while循环在条件为真的情况下重复执行代码块,do-while循环先执行一次代码块,然后在条件为真的情况下重复执行代码块。 举个例子,下面是一段JavaScript代码: ```javascript <script> var a = 10; var b = 5; console.log(a > b && b > a); console.log(a > b || b > a); </script> ``` 在这段代码中,我们定义了两个变量a和b,并使用console.log()方法分别输出了两个逻辑表达式的结果。第一行代码中,a > b && b > a的结果为false,因为a不大于b且b不大于a。第二行代码中,a > b || b > a的结果为true,因为a不大于b或b不大于a至少有一个条件成立。 这就是JavaScript基础语法的一部分,包括数据类型、运算符、选择结构和循环结构。通过掌握这些基础知识,我们可以开始编写JavaScript程序。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【JavaScript】基本语法大全](https://blog.csdn.net/weixin_64916311/article/details/129136028)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值