JavaScript基础知识整理(最全知识点, 精简版,0基础版)

news2024/11/23 3:49:14

文章目录

一、输入和输出内容

1.1 输出

1.1.1 在浏览器的控制台输出打印

1.1.2 直接在浏览器的页面上输出内容

1.1.3 页面弹出警告对话框

1.2 输入

二、变量

2.1 变量是什么

2.2 变量的声明和赋值

2.3 变量的命名规范和规范

三、变量扩展(数组)

3.1 数组的声明

3.2 数组的使用

3.3 数组的长度

四、常量

4.1 常量的声明和赋值

五、数据类型

5.1 数字数据类型

5.2 字符串类型

5.3 布尔类型

5.4 null 类型

5.5 未定义类型

六、隐式转换和显示转换

6.1 使用 + 进行隐式转换

6.2 显示转换

七、运算符

7.1 算数运算符

7.2 赋值运算符

7.3自增自减运算符

7.4 比较运算符

7.5 逻辑运算符 

7.6 三元运算符

7.7 运算符的优先级

八、分支语句

8.1 单分支语句

8.2 双分支语句

8.3 多分支语句

8.4 switch分支语句

九、循环语句

9.1 while循环

9.2 for 循环

9.3 for循环的嵌套

十、数组的使用 

10.1 数组的声明(可以放任意的数据类型,不只是数字,这里)

10.2 取值

10.3 数组的长度表示

10.4 数组的基本使用

10.5 数组的相关操作

十一、函数的使用

11.1 封装函数

11.2 函数参数以及默认参数

11.3 函数的返回值 

11.4 作用域

11.4.1 全局作用域

11.4.2 局部作用域

11.5 匿名函数 (没有名字的函数)

11.5.1 函数表达式

11.5.2 立即执行函数

十二、对象

12.1 对象的基本使用 

12.2 对象的相关操作

12.3 对象的方法

12.4 遍历对象

12.5 内置对象

十三、随机数函数

十四、总结


一、输入和输出内容

1.1 输出

1.1.1 在浏览器的控制台输出打印

 console.log("I love JS")

1.1.2 直接在浏览器的页面上输出内容

document.write(111)

1.1.3 页面弹出警告对话框

alert("出错啦")

1.2 输入

prompt("请输入你的姓名")

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

二、变量

2.1 变量是什么

变量是一个容器,用来存储数据的。举一些生活中的例子,就比如比较熟悉的HTML标签、教室、宿舍等等

2.2 变量的声明和赋值

  使用关键字let 声明

let age = 20

let arr = [10, 20, 30, 40, 50, 60, 70, 80, 90]

let name = "张三"

案例: 交换两个变量

    <script>
        let a = 10
        let b = 20
        let t
        t = a
        a = b
        b = t
        document.write(a+"</br>" + b)
    </script>

2.3 变量的命名规范和规范

规则

1. 不能使用关键字:有特殊含义的字符,比如JavaScript内置的一些英语词汇:var, let, const, for, if...

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

3. 严格区分大小写: 比如name和Name是两个不同的变量

规范:

1. 起名要有意义:比如商品,你可以使用goods, 这样别人看到就可以很快理解了

2. 可以采用小驼峰命名:比如用户姓名: userName

三、变量扩展(数组)

3.1 数组的声明

let arr = [1,2,3,4, "xx"]

3.2 数组的使用

数组是有序的,如果需要使用数组中的元素,可以使用索引号(下标)来查找,索引号从0开始

->  数组名[下标]

console.log(arr[0])   // ->> 1

console.log(arr[2])   // ->> 3

3.3 数组的长度

console.log(arr.length)  // -> 5

四、常量

4.1 常量的声明和赋值

使用 const 声明
const PI = 3.14  
//常量声明时,必须赋值
//常量赋值后,不能修改
console.log(PI)
注意:常量不能够被重新赋值,常量在声明的时候必须赋值(初始化)

五、数据类型

JS的数据类型分为两大类:基本数据类型和引用数据类型

1. 基本数据类型: 数字类型number、字符串类型string、布尔类型boolean、空类型null、未定义型undefined

2. 引用数据类型:对象object

在JS中可以使用type of 来查看变量是什么数据类型 

5.1 数字数据类型

let num = 20
console.log(type of num)   // -> number

5.2 字符串类型

let name = "张三"
console.log(type of name)  // -> string

 1. 字符串的拼接 (使用 + 进行拼接)

console.log("我的同学叫" + name + ",他很帅")

2. 模板字符串 

 </script>
  let str = `xx`
  let str1 = 'xx1'
  let str2 = ''


 // 模板字符串
 // 1. 模板字符串用反引号标识
 // 2. 模板字符串中可以出现变量,变量用${变量名}标识
 // 3. 模板字符串中可以出现表达式,表达式用${表达式}标识
 // 4. 模板字符串中可以出现函数调用,函数调用用${函数名()}标识
 // 5. 模板字符串中可以出现多行文本,用\n标识
 let age = 20
 console.log(`我今年${age}岁了`);

</script>

5.3 布尔类型

let isClick = true
console.log(type of isClick)   // -> true


console.log(3 > 4)  // -> false

5.4 null 类型

let obj = null

5.5 未定义类型

声明了变量,但是未赋值,那么这个变量就是未定义类型

let num
console.log(num)   // -> undefined

六、隐式转换和显示转换

6.1 使用 + 进行隐式转换

只要加号一侧有引号,就会将另一侧的数字型转换为字符串类型

console.log(1 + 1)   // -> 2 
console.log("xx" + 1)  // -> xx1

6.2 显示转换

1. 转为数字类型

let s = "1"
let num = Number(s)
console.log(num)   // -> 1

注意:(1)其实除了 + 外,  其他运算符 -, *, /,都有同样的作用

           (2)但是利用NUmber()进行强制转换时,所需转换的变量,去掉引号后,必须是数字,不然会变成NaN 

除了Number以外,还有两种方法可以转换为数字类型

1. parseInt()    >>   只保留整数

2.parseFloat()   >> 可以保留小数

 2.转为字符串类型

let num = 1
let str = String(num)
console.log(str)  ->  "1"

七、运算符

7.1 算数运算符

算数运算符我们应该已经很熟悉了: +, -, *, / , % ...

7.2 赋值运算符

1.   =

2. += , -=, *= ,/= ,......

let num = 10
num += 10    // -> 相当于 num = num + 10  

 7.3自增自减运算符

++

--

let num = 1
num = num + 1
console.log(num)  //  -> 2


// same
num++
console.log(num)   ->  2

更多解释:

后置自增 i++ 和 前置自增 ++i  的区别:

let i = 1

console.log(++i + 1);   // 结果是3
 // 注意: i是2
 // i先自加 1 ,变成2之后,再和后面的2相加
let i = 1
console.log(i++ + 1) // -> 2

// i后加1,参与运算的i值仍是1

7.4 比较运算符

等于==(值相同),  全等===  (值和数据类型都相同) ,不等!=,  不全等!==,>, <, >=, <=

结果是布尔类型 

7.5 逻辑运算符 

逻辑与 &&  (一假则假), 逻辑或 || (一真则真), 逻辑非 !(假变真,真变假)

7.6 三元运算符

console.log(3 > 5 ? 3 : 5)

分析:如果3>5为true, 则结果为3, 否则结果为5 

案例:数字补零,, 也涉及到了+,字符串的拼接

// 1. 用户输入
let num = +prompt("请输入一个数字")

alert(num < 10 ? '0' + num : num)

 7.7 运算符的优先级

这里面分的比较细! 

八、分支语句

8.1 单分支语句

if (i === 10) {
    document.write("猜对了!")
}

8.2 双分支语句

if (i === 10) {
     document.write("猜对了!")
} else {
     document.write("猜错了!")
}

案例:判断闰年 

let year = +prompt("请输入年份:")
if (year % 4 === 0 && year % 100 !== 0 || year % 400 === 0) {
      alert(`${year}是闰年`)
} else {
      alert(`${year}不是闰年`)
}

 8.3 多分支语句


        if() {

        } else if () {

        } else if () {

        } ... else {
            
        }

 直接上案例:成绩判断

let score = +prompt("请输入分数:")
if(score >= 90) {
     alert("A")
} else if (score >= 80) {
     alert("B")
} else if (score >= 70) {
     alert("C")
} else if (score >= 60) {
     alert("D")
} else {
     alert("不及格!")
}

 8.4 switch分支语句

语法格式!!

        switch (key) {
            case value:
                
                break;
            case value:
                
                break;
                ...
        
            default:
                break;
        }

案例:还是上面成绩案例 

        let score = +prompt("请输入你的成绩:")
        score /= 10
        switch (score) {
            case 10:
                alert("A")
                break;
            case 9:
                alert("B")
                break;
            case 8:
                alert("C")
                break;
            case 7:
                alert("D")
                break;
            case 6:
                alert("E")
                break;
            default:
                alert("不及格")
                break;
        }

九、循环语句

9.1 while循环

// 循环三要素:  变量起始值;  终止条件;  变量变化量(用自增或者自减)
        let i = 0  // 变量起始值
        while(i <= 5) {  //终止条件
            document.write("我爱学习!")
            i++  //变量变化量
        }

案例:无限循环 -> 只要不满足退出的条件,就会无限执行:你爱我吗

        while(1) {
            let text = prompt("你爱我吗?")

            if (text === '爱') {
                break
            }
        }

9.2 for 循环

语法格式

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

案例演示:

        for (let k=0; k<3; k++) {
            document.write("好好学习!")
        }

 

 9.3 for循环的嵌套

直接上案例:九九乘法表

        let i, j
        for (i = 1; i <= 9; i++) {
            for (j = 1; j <= i; j++) {
                document.write(`${j} * ${i} = ${i * j} `)
            }
            document.write("<br>")
        }

补充:那么什么时候使用for循环,什么时候使用while循环?

当循环次数确定时,使用for循环。循环次数不确定时,使用while循环 

十、数组的使用 

10.1 数组的声明(可以放任意的数据类型,不只是数字,这里)

let arr = [2, 6, 1, 7, 4]  //(可以放任意的数据类型,不只是数字,这里以数字举例)

10.2 取值

通过下标或索引号取值,从0开始

arr[0]    // -> 2
arr[1]   // -> 6

 10.3 数组的长度表示

arr.length    // -> 5

10.4 数组的基本使用

直接上案例:使用for循环遍历数组 , 求数组元素之和和平均值

        let arr = [2, 6, 1, 7, 4]
        let i
        let sum = 0
        let average = 0.0
        for (i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        average = sum / arr.length * 1.0
        document.write(`和为${sum}, 平均值为${average}`)

案例:求数组中的最大值 

默认最大值和最小值的初始值为数组中的第一个元素arr[0]

        let arr = [2 ,6, 1, 77, 52, 225, 7]
        let max = arr[0]
        let min = arr[0]
        for (let i = 1; i < arr.length; i++) {
            if (arr[i] > max) {
                max = arr[i]
            }
            if (arr[i] < min) {
                min = arr[i]
            }
        }
        document.write(`最大值为${max}`)
        document.write(`最小值为${min}`)

10.5 数组的相关操作

修改:

        // 改
        let arr = []
        arr[0] = 1
        console.log(arr)

        let arr1 = ['蓝', '红', '黄']
        arr1[1] = '绿'
        console.log(arr1)

新增 :

        // 增
        // 1. push 末尾新增
        let arr2 = ['小明', '小强', '小刚']
        arr2.push('小华')
        console.log(arr2)
        console.log(arr2.push('小华'))  // 可以直接返回数组的长度

        // 2. unshift 开头新增
        let arr3 = [1, 2, 3, 4]
        console.log(arr3.unshift(6))   // 也可以直接返回数组的长度
        console.log(arr3)

删除 :

        // 删除
        // 1. pop()   可以删除数组中的最后一个元素,并且返回该元素的值
        let arr4 = [1, 3, 5, 7, 8, 9]
        console.log(arr4.pop())
        console.log(arr4)
        
        // 2. shfit()  删除第一个元素, 并且返回该元素的值
        console.log(arr4.shift())
        console.log(arr4)

        // 3. splice()  删除指定的元素
        // 语法:  arr.splice(起始位置->索引号, 删除几个元素)
        let arr5 = [9, 10, 87, 99, 76]
        console.log(arr5.splice(1,2))
        console.log(arr5)

 

十一、函数的使用

11.1 封装函数

函数: 可以实现代码复用,提高开发效率

      function 是执行特定任务的代码块

        

     1. 声明语法:

                function 函数名() {

                    函数体

                }

      2. 调用语法:

                函数名()

// 声明
function fn() {
    document.write("好好学习")
}

// 调用
fn()

 11.2 函数参数以及默认参数

直接上案例: 封装一个函数,计算两个数的和 


        // let a,b 
        function sum(a, b) {
            console.log(a + b)
        }
        sum(4,3)   // ->  7

 基于上述代码如果调用函数时,没有传参,相当于a 和 b 都未定义,为undefined, 所以返回结果时NaN, 为了优化代码,我们可以设定默认参数

 

 

11.3 函数的返回值 

函数返回值的优点是便于得到数据,并对数据进行相应的处理和使用

关键字: return

        function sum(a=0, b=0) {
            return a + b
        }
        let sum1 = sum(4,3)
        console.log(sum1)

 11.4 作用域

11.4.1 全局作用域

作用于所有代码的执行环境(整个script标签内部)

在下述代码中定义了一个变量num , 它既可以在函数外部使用,也可以在函数内部使用 

 

11.4.2 局部作用域

作用域函数内的代码环境,因为跟函数有关,所以也叫函数作用域 

在下述代码中,在函数内部定义了一个变量 str, 在函数外部使用时,会报错

 

11.5 匿名函数 (没有名字的函数)

11.5.1 函数表达式

语法格式:

let fn = function() {
    // 函数体
}

 这里面 fn 就相当于函数的名字, 调用函数时, 直接用 fn() 即可

        // 1.函数表达式
        let fn = function () {
            console.log('函数表达式')
        }
        fn()

 

11.5.2 立即执行函数

立即执行函数就是,不用调用,直接就可以执行

语法格式: 

(function() {})()

        // 立即执行函数: 避免全局变量之间的污染
        // 多个立即执行函数,之间需要用 分号 隔开
        (function () {
            let num1 = 9
            console.log(11)
        })();
        (function () {
            let num2 = 10
            console.log(11)
        })()

 

十二、对象

对象是一种无序的数据集合,用来描述一个人或物

12.1 对象的基本使用 

语法格式:

let obj = {
    属性名: 属性值,
    ...
}

比如描述一个人

let obj = {
    name: 'xx',
    age: 20,
    gender: '男'
}

 

 12.2 对象的相关操作

查找:

语法:对象名.属性

 

还有一种查的方法:

对象名['属性名']         console.log(obj['name'])

修改:对象名.属性 = 新值

        let obj = {
            name: 'xx',
            age: 20,
            gender: '男'
        }
        obj.name = 'yy'
        console.log(obj.name);

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

新增和修改的语法格式相同,只不过增的是对象中没有的属性 

 

 

 

 删除:delete 对象名.属性

 

 

 

12.3 对象的方法

 

 

12.4 遍历对象

        let obj = {
            name: 'xx',
            age: 20,
            gender: '男'
        }

        for (let k in obj) {
            console.log(k)  // k 是属性名, k字符串类型
            console.log(obj[k])  
        }

上述字符串的查找方式,上文有介绍过 

 

12.5 内置对象

 

 

 

十三、随机数函数

let num = Math.random()  // 返回一个 0-1 之间的随机小数, 包括0 ,不包括 1
console.log(num)

 生成0-10的随机数:

// 生成0-10的随机数:
Math.floor(Math.random() * (10+1))  // 向下取整

 同理:

// 生成5-10的随机数
 Math.floor(Math.random() * (5+1)) + 5

// 生成N-M的随机数
Math.floor(Math.random() * (M-N+1)) + N

 案例:

let arr = [1, 2, 3]
let n = Math.floor(Math.random() * (arr.length))
console.log(arr[n]);

十四、总结

本片博客介绍了JavaScript的基础知识的内容,是自己学完后的总结,希望也可以帮助正在学习的你,后续也会继续更新js高级的相关知识。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1297573.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Databend 开源周报第 122 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 支持链式函数调…

windows11 windows 11 (win11 win 11) 怎么安装 Python3 ? numpy? sounddevice? 声音信号处理库?

首先确认要安装的 sounddevice 库&#xff0c;链接&#xff1a;https://python-sounddevice.readthedocs.io/en/0.4.6/ 根据文档&#xff0c;可知最新的 sounddevice 版本是 0.4.6 进入安装页面查看&#xff0c;发现 Newest sounddevice 可以使用 pip 安装&#xff0c;如下图…

mysql中NULL值

mysql中NULL值表示“没有值”&#xff0c;它跟空字符串""是不同的 例如&#xff0c;执行下面两个插入记录的语句&#xff1a; insert into test_table (description) values (null); insert into test_table (description) values ();执行以后&#xff0c;查看表的…

Linux系统编程:高级IO总结

非阻塞IO基本概念 高级IO核心就一个概念&#xff1a;非阻塞IO。 与该概念相对的&#xff0c;就是我们之前学习过的阻塞IO。 非阻塞IO&#xff08;Non-blocking I/O&#xff09;是一种IO模型&#xff0c;用于实现异步IO操作&#xff0c;使应用程序能够在等待IO操作完成的同时…

【Python】 生成二维码

创建了一个使用 python 创建二维码的程序。 下面是生成的程序的图像。 功能描述 输入网址&#xff08;URL&#xff09;。 输入二维码的名称。 当单击 QR 码生成按钮时&#xff0c;将使用 QRname 中输入的字符将 QR 码生成为图像。 程序代码 import qrcode import tkinterd…

【C++】简单工厂模式

2023年12月6日&#xff0c;周三下午 今天又学习了一次简单工厂模式 每多学习一次&#xff0c;都会加深对设计模式的理解 目录 什么是简单工厂模式简单工厂模式的优缺点举例说明 什么是简单工厂模式 简单工厂模式&#xff08;Simple Factory Pattern&#xff09;是一种创建型…

【深度学习】一维数组的 K-Means 聚类算法理解

刚看了这个算法&#xff0c;理解如下&#xff0c;放在这里&#xff0c;备忘&#xff0c;如有错误的地方&#xff0c;请指出&#xff0c;谢谢 需要做聚类的数组我们称之为【源数组】 需要一个分组个数K变量来标记需要分多少个组&#xff0c;这个数组我们称之为【聚类中心数组】…

网络基础---网络层详解(图文清晰易懂!!!)

目录 一、网络层的功能 二、IP数据包的格式 三、ICMP协议 1.ICMP协议的概念和作用 2.ping命令 2.1 ping 的格式 2.2 ping选项 2.3 当我们ping不通时&#xff0c;及服务器出现问题&#xff0c;如何排错 2.4 信息传递时出现的问题类型和具体情况 四、冲突域和广播域 1.…

STM32--GPIO点亮LED灯(手把手,超详细)

写在前面&#xff1a;在前面的学习中&#xff0c;我们学习了STM32的编译环境&#xff08;MDK&#xff09;、时钟树以及GPIO的8种工作模式&#xff1b;这节我们学习正式入门STM32---点亮第一个LED灯&#xff1b;即利用GPIO进行电灯&#xff0c;尽管是一个十分简单的实现&#xf…

2020年第九届数学建模国际赛小美赛A题自由泳解题全过程文档及程序

2020年第九届数学建模国际赛小美赛 A题 自由泳 原题再现&#xff1a; 在所有常见的游泳泳姿中&#xff0c;哪一种最快&#xff1f;哪个冲程推力最大&#xff1f;在自由泳项目中&#xff0c;游泳者可以选择他们的泳姿&#xff0c;他们通常选择前面的爬行。然而&#xff0c;游泳…

知识付费商城7.0.3开心学习版,新增供货商功能

彩虹知识付费商城7.0.3小森升级版新增供货商开心学习版。仅供开发参考&#xff0c;切勿正式商用。 1.新增邮件提醒功能&#xff0c;支持给用户发订单、结算等邮件通知 2.支持给管理员发送提现、域名审核等邮件通知 3.支持设置手续费最低扣除金额 4.修复了其他一些已知问题 …

激光雷达标定板提高扫地机器人感知环境能力和清洁效率

智能扫地机器人的激光雷达标定板是一种用于校准激光雷达的设备&#xff0c;它通常由不同反射率的涂料涂覆在板面上&#xff0c;用于接收激光雷达发出的激光束并将其反射回来&#xff0c;从而帮助校准激光雷达的测量参数。在自动驾驶和机器人领域&#xff0c;激光雷达和相机的联…

HDFS Java API 基本操作实验

文章目录 一、实验环境二、实验内容&#xff08;一&#xff09;数据准备&#xff08;二&#xff09;编程环境准备&#xff08;三&#xff09;使用Hadoop API操作HDFS文件系统&#xff08;四&#xff09;使用Hadoop API Java IO流操作HDFS文件系统 三、实验步骤&#xff08;一&…

OpenCL学习笔记(二)手动编译开发库(win10+vs2019)

前言 有时需求比较特别&#xff0c;可能需要重新编译opencl的sdk库。本文档简单记录下win10下&#xff0c;使用vs2019编译的过程&#xff0c;有需要的小伙伴可以参考下 一、获取源码 项目地址&#xff1a;GitHub - KhronosGroup/OpenCL-SDK: OpenCL SDK 可以直接使用git命令…

【剑指offer|图解|数组】寻找文件副本 + 螺旋遍历二维数组

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;数据结构、剑指offer每日一练 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 一. ⛳️寻找文件副本(题目难度&#xff1a;简单)1.1 题目1.2 示例1.3 限制1.4 解题思路一c代…

2023年第一次系统架构师备考经历

12月7日成绩已经出来&#xff0c;果然最担心的案例分析没有过&#xff0c;才考了40分&#xff0c;还差5分&#xff0c;我就可以一次拿下证书&#xff0c;好可惜啊&#xff0c;今年的题出的有点偏&#xff0c;大数据居然成为必答题&#xff0c;平常是搞Java&#xff0c;大数据方…

做抖店代发,新手如何定类目?五大类目优缺点分析!

我是电商珠珠 类目是店铺的方向&#xff0c;只有将店铺的定位确定好&#xff0c;才能超越大部分的同行。 我经常跟我的学生讲&#xff0c;选择类目的时候不能瞎选&#xff0c;要学会去分析市场&#xff0c;由于大部分的学员前期都是新手小白&#xff0c;所以我们这边会负责给…

[Linux] 用LNMP网站框架搭建论坛

一、nginx在其中工作原理 原理&#xff1a; php-fpm.conf是控制php-fpm守护进程 它是php.ini是一个php解析器 工作过程&#xff1a; 1.当客户端通过域名请求访问时&#xff0c;Nginx会找到对应的虚拟主机 2. Nginx将确定请求。 对于静态请求&#xff0c;Nginx会自行处理…

听GPT 讲Rust源代码--src/tools(9)

File: rust/src/tools/rust-analyzer/crates/ide-assists/src/handlers/apply_demorgan.rs 在Rust源代码中&#xff0c;apply_demorgan.rs文件位于rust-analyzer工具的ide-assists库中&#xff0c;其作用是实现一个辅助函数&#xff0c;用于在代码中应用De Morgan定律的变换。 …

第二十一章网络通信总结

网络程序设计基础 局域网与互联网 为了实现两台计算机的通信&#xff0c;必须用一个网络线路连接两台计算机。如下图所示 网络协议 1.IP协议 IP是Internet Protocol的简称&#xff0c;是一种网络协议。Internet 网络采用的协议是TCP/IP协议&#xff0c;其全称是Transmissi…