JavaScript基础 第一天

本套笔记是通过学习B站Pink老师JavaScript核心进阶 前端必学总结的学习笔记,希望自己之后在使用的过程中能够将所学知识融会贯通

学习目标

1. 理解变量是存储数据的容器

2.理解什么是数据并知道数据的类型

3.知道JavaScript数据类型转换的特征

学习目录

1.JavaScript介绍

2.变量

3.数组

4.常量

5.数据类型

6.类型转换

一.JavaScript介绍

1.1.JavaScript是什么

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

1.2.JavaScript 作用是什么

  • 可以做网页特效(监听用户的一些行为让网页作出对应的反馈)
  • 表单验证(针对表单数据的合法性进行判断)
  • 数据交互(获取后台的数据,渲染到前端)
  • 服务器编程(node.js)

1.3.JavaScript的组成

  • ECMAScript :基本语法(变量,分支语句,循环语句,对象)
  • Web APIs:

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

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

1.4.查询权威网站  : MDN

1.5.JavaScript的书写位置

① 内部JS

  • 直接写在HTML文件里,用script标签包住
  • 规范:script标签写在</body>的上方
  •  将<Script>放在HTML文件的底部附近的原因是浏览器会按照代码在文件中的顺序加载HTML,如果先加载的JavaScript期望修改下方的HTML,那么它可能由于HTML尚未被加载而失效,因此,将JavaScript代码放在HTML页面底部附近通常是最好的策略

② 外部JS

  • 代码写在以.js结尾的文件里
  • 通过script标签,引入到html页面中
  •  外部js <script> 标签中间不要写内容,就算写了也不会执行
  • 外部JavaScript会使代码更加有序,更易于复用,没有脚本的混合,HTML也会更加易读

③ 内联JS

  • 代码写在标签内部

1.6.JavaScript中的注释写法以及结束符写法

 ① 注释

  • 单行注释

        (1)符号://

        (2)作用:// 右边这一行的代码会忽略

        (3)快捷键:ctrl + /

       

  • 块注释

          (1)符号:  /*   */

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

          (3)快捷键:shift + alt + a

       

 ② 结束符

  • 作用:使用英文的;代表语句的结束
  • 实际情况:实际开发中,可写可不写,浏览器可以自动推断语句的结束位置
  • 现状:实际开发中,越来越多的人主张,书写javascript代码时省略结束符
  • 约定:为了风格统一,可以按照团队要求,要么每句都写,要么每句都不写

1.7.JavaScript输入输出语法

  • 输入:显示一个对话框,对话框中包含一条文字信息,用来提示用于输入文字
prompt("请输入您的姓名:")

 

 

  • 输出:

   ① document.write(‘要输出的内容')

   向body内输出内容,如果输出的内容写的是标签,也会被解析为网页元素

document.write('hello')
document.write('<h1>hello</h1>')

② alert('要输出的内容')

页面弹出警示对话框

alert('hi')

③ 控制台输出语法: 给程序员用于调试

console.log("hello")
  • JS的代码执行顺序

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

    ② alert() 和 prompt() 会跳出页面渲染先被执行

1.8 字面量

概念:在计算机科学中,字面量是在计算机中描述  事/物

举例:1000 就是数字字面量, ‘hello’就是字符串字面量 

二.变量 

学习目录:

1.变量基本使用

2.变量的本质

3.变量命名规则与规范

2.1 变量的基本使用

① 概念:变量是计算机存储数据的容器,不是数据本身,仅仅是一个用来存储数据的容器

② 变量的声明:想使用变量,首先需要创建变量,创建变量也成为声明变量或者定义变量

③ 变量声明的语法: 

  •   let  变量名
  • let是关键字,所谓关键字就是系统提供的专门用来声明变量的词语
  • 举例 :age是变量的名称,也称为标识符
let age

  ④ 变量赋值:定义一个变量后,你就能够初始化它,在变量名之后跟上一个=,然后是数值

   举例:

age = 18

⑤ 通过变量名来获取变量里面的数据

console.log(age)

⑥ 更新变量:变量赋值后,还可以通过简单地给它一个不同的值来更新它, let 不允许多次声明一个变量

let age = 18
age = 19

⑦ 声明多个变量:变量赋值后,还可以通过简单地给它一个不同的值来更新它,多个变量中间用逗号隔开(不推荐,为了更好的可读性,请一行只声明一个变量)

let age = 18, uname = 'hello'

2.2 变量的本质

① 变量的本质是程序在内存中申请的一块用来存放数据的小空间,然后给这个小空间取一个名字,把一个数据存储到这个空间中,程序想访问的话就用这个名字访问

2.3 变量命名规则与规范

① 规则:是必须遵守的,如果不遵守就会报错

  • 不能使用关键字,关键字是一些有特殊含义的字符,JavaScript中内置的一些英语词汇,比如 let var if for
  • 只能使用下划线,字母,数字,$组成,且数字不能开头
  • 字母严格区分大小写,比如Age和age是不同的变量

② 规范:建议,不遵守不会报错,但是不符合业内通识

  • 起名要有意义
  • 遵守小驼峰命名法:第一个单子首字母小写,后面每个单词首字母大写

2.4 let和var的区别

  • 在旧的JavaScript中,使用关键词var来声明,而不是用let
  • var现在开发中一般不再使用它,只是我们可能在老版本程序中看到它
  • let为了解决var的一些问题:

             ① var声明可以先使用后声明(`不合理)

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

             ③ 比如变量提升,全局变量,没有块级作用域                  

  • 声明变量统一使用let

三. 数组

① 数组的概念:将一组数据存储在单个变量名下的优雅方式

② 语法: let 数组名 = [ 数据1,数据2, 数据3]

③ 数组是按顺序保存,所以每个数据都有自己的编号,编号被称为索引或下标,索引从0开始

④ 访问某个数据: 数组名[索引号]

⑤ 数组可以存储任意类型的数据

let week = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期天']
console.log(week[6])

⑥ 数组的一些术语

  • 元素:数组中保存的每个数据都叫数组元素
  • 下标:数组中数据的编号
  • 长度:数组中数据的个数,通过length属性获得

四.常量

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

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

③ 命名规范:和变量的命名规范一致

④ 常量使用:

const PI = 3.14;
console.log(PI);
// PI = 3.15;  不允许再次赋值

⑤ 注意: 常量不允许重新赋值,声明的时候必须赋值,也就是说常量必须进行初始化

⑥ 使用:不需要重新赋值的数据使用const

五.数据类型

1.数据类型

2.检测数据类型

5.1 数据类型

① JS中数据类型分为两大类

  • 基本数据类型:number 数字型   string 字符串型   boolean 布尔型  undefined 未定义型

      null 空类型

  • 引用数据类型:object对象

5.1.1  number 数字型

  •  可以是正数,小数,正数,负数,这些统称为数字类型
  • JS是弱数据类型,变量到底是属于哪种类型,只有赋值之后,才能确认
  • Java是强数据类型,比如 int a = 3  必须是整数
let age = 18
let price = 99.0
  • 数字可以有很多操作,比如加减乘除,所以经常和算术运算符一起,算术运算符是指数学运算符,主要包括加减乘除,取余(+  -  *  /)
  • 优先级相同时从左到右依次执行
  • 优先级与算术运算符优先级相同,先乘除后加减,有括号先算括号中的
  • NaN : 表示一个计算错误,它是一个不正确的或者一个未定义的数学操作所得到的结果
  • NaN是粘性的,任何对NaN的操作都会返回NaN

5.1.2  string 字符串型

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

注意

  • 无论单引号或是双引号必须成对使用
  • 单引号/双引号可以互相嵌套,但不能以自己嵌套自己(可以外单内双,或者内单外双)
  • 必要时可以使用转义符\,输出单引号或双引号
let uName = 'hello'

② 字符串拼接

  • 场景:  + 运算符可以实现字符串拼接
console.log('cherry' + '老师')

③ 模板字符串(重要)

  • 场景:拼接字符串和变量
  • 语法:使用`` (反引号,就是tab键上面的那个键),在拼接变量时,用${}包住变量
document.write(`大家好,我叫${name}, 今年${age}岁了` )

5.1.3  boolean 布尔类型

  • 表示肯定或者否定时在计算机中对应的是布尔类型
  • 有两个固定的值true 或者 false,true表示真的,false表示假的

5.1.4  undefined 未定义类型

  • 未定义类型是比较特殊的值,只有一个值undefined
  • 什么情况下会出现未定义类型:只声明变量,不赋值的情况下,变量默认值为undefined
  • 工作中使用的场景:在开发中经常声明一个变量,等待数据传过来,我们不知道这个数据是否传递过来,这个时候就可以通过检测这个变量是不是undefined,判断用户是否有数据传过来

5.1.5  null空类型

① 概念:null代表"空","无",“值未知”的特殊值,把null作为尚未创建的对象

② null和undefined的区别

  • undefined 表示没有赋值
  • null表示赋值了,但是内容为空

5.2 检测数据类型

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

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

       ① 作为运算符: typeof x  

       ② 函数形式: typeof(x)

    let num = 10
    console.log(typeof num)
    let str = 'hello'
    console.log(typeof str)
    let obj = null
    console.log(typeof obj)

5.3 类型转换

① 为什么需要类型转换

在收取表单数据的时候,通常收取到的都是字符串类型,就不能进行算术运算,所以这个时候就需要转换变量的数据类型,就是需要把一种数据类型的变量转换为我们需要的数据类型

② 隐式转换和显示转换

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

  • 规则

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

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

  • 缺点

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

  • 技巧

          (1)  + 作为正号解析可以转换为数字型, 下面得到的结果就是数字型       

console.log(+'123')

        (2)任何数据和字符串相加的结果都是字符串

显示转换

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

概念:自己告诉代码需要转成什么类型

① 转换为数字型

    Number(数据)

  • 如果字符串内容中有非数字,转换失败时结果为NaN
  • NaN也是number类型的数据,表示非数字
    let str = '123'
    console.log(Number(str))

   parseInt(数据):只保留整数,不会进行四舍五入

   parseFloat(数据):保留小数

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

排序进行曲-v4.0

文章目录 小程一言快速排序步骤详细解释具体步骤 举例总结 复杂度分析时间复杂度分析&#xff1a;空间复杂度分析&#xff1a;注意 应用场景总结 实际举例结果总结 代码实现结果解释 小程一言 这篇文章是在排序进行曲3.0之后的续讲&#xff0c; 这篇文章主要是对快速排序进行细…

[JAVAee]网络编程-套接字Socket

目录 基本概念 发送端与接收端 请求与响应 ​编辑客户端与服务器 Socket套接字 分类 数据报套接字 流套接字传输模型 UDP数据报套接字编程 DatagramSocket API DatagramPacket API InetSocketAddress API 示例一: 示例二: TCP流数据报套接字编程 ServerSock…

Jupyter Notebook 遇上 NebulaGraph,可视化探索图数据库

在之前的《手把手教你用 NebulaGraph AI 全家桶跑图算法》中&#xff0c;除了介绍了 ngai 这个小工具之外&#xff0c;还提到了一件事有了 Jupyter Notebook 插件: https://github.com/wey-gu/ipython-ngql&#xff0c;可以更便捷地操作 NebulaGraph。 本文就手把手教你咋在 J…

设备管理平台:采用以可靠性为中心的维护策略的优势

在如今的工业领域&#xff0c;以可靠性为中心的维护策略正逐渐成为企业数字化转型的核心。无论是混合还是离散自动化应用&#xff0c;优化维护和工作流程实践已经成为提高利润、降低停机时间、增强运营和生产性能的不可或缺的一环。在这个过程中&#xff0c;设备管理系统与物联…

汽车BOOTLOADER开发经历

鄙人参与电动汽车BOOTLOADER开发近三年&#xff0c;从完全没有这方面的基础到参与国内外大小知名或不知名车企的电动车三大件的BOOTLOADER开发&#xff0c;总结了以下一点学习心得。 1.熟悉基本术语含义 诊断、寻址方式、FBL、擦除、驱动 2.熟悉国际标准、UDS服务格式 汽车的…

Redis BitMap/HyperLogLog/GEO/布隆过滤器案例

面试问题&#xff1a; 抖音电商直播&#xff0c;主播介绍的商品有评论&#xff0c;1个商品对应了1系列的评论&#xff0c;排序展现取前10条记录用户在手机App上的签到打卡信息&#xff1a;1天对应1系列用户的签到记录&#xff0c;新浪微博、钉钉打卡签到&#xff0c;来没来如何…

我开源的 c#+wpf 模仿网易云音乐播放器

MusicApp 介绍 gitee地址&#xff1a;https://gitee.com/liu_guo_feng/music-app 我开源的 c#wpf 模仿网易云音乐播放器 项目页面功能完成列表 首页(待完善) 每日推荐音乐 歌单详情 带播放列表 歌词页(待完善) 换肤功能(待完善) 系统托盘 … 预览 仅供学习使用 不作任何商业用…

类图的6种关系和golang应用

文章目录 1. 依赖和关联1.1 依赖&#xff08;Dependency&#xff09;概念类图示例代码示例 1.2 关联&#xff08;Association&#xff09;概念类图示例代码示例 2. 组合和聚合&#xff08;特殊的关联关系&#xff09;2.1 聚合&#xff08;Aggregation&#xff09;概念类图示例代…

9、Kubernetes核心技术 - Volume

目录 一、概述 二、卷的类型 三、emptyDir 四、hostPath 五、NFS 5.1、master服务器上搭建nfs服务器 5.2、各个slave节点上安装nfs客户端 5.3、创建Pod 六、PV和PVC 6.1、PV 6.1.1、PV资源清单文件示例 6.1.2、PV属性说明 6.1.3、PV的状态 6.2、PVC 6.2.1、PVC资…

Chapter 13: Network Programming | Python for Everybody 讲义笔记_En

文章目录 Python for Everybody课程简介Network ProgrammingNetworked programsHypertext Transfer Protocol - HTTPThe world’s simplest web browserRetrieving an image over HTTPRetrieving web pages with urllibReading binary files using urllibParsing HTML and scra…

如何实现对主机的立体监控?

主机监控是保证系统稳定性和性能的重要环节之一&#xff0c;那应该如何实现对主机的立体监控&#xff1f; 本期EasyOps产品使用最佳实践&#xff0c;我们将为您揭晓&#xff1a; 主机应该如何分组和管理&#xff1f; 主机监控应该关注哪些关键性指标&#xff1f; 背 景 通…

利用线程池多线程并发实现TCP两端通信交互,并将服务端设为守护进程

文章目录 实现目标实现步骤封装日志类封装线程池封装线程封装锁封装线程池 TCP通信的接口和注意事项accept TCP封装任务客户端Client.hppClient.cc 服务端Server.hpp Server.cc实现效果 守护进程服务端守护进程化 实现目标 利用线程池多线程并发实现基于TCP通信的多个客户端与…

vue3 excel 导出功能

1.安装 xlsx 库 npm install xlsx2.创建导出函数 src/utils/excelUtils.js import * as XLSX from xlsx;const exportToExcel (fileName, datas, sheetNames) > {// 创建工作簿const wb XLSX.utils.book_new()for (let i 0; i < datas.length; i) {let data datas…

Q-Tester 3.8:适用于开发、生产和售后的诊断测试软件

Q-Tester是一款简易使用的诊断测试软件&#xff0c;同时也是一款基于ODX&#xff08;ASAM MCD-2D/ISO 22901-1&#xff09;国际标准的工程诊断仪&#xff0c;通过该诊断仪可实现与ECU控制之间的数据交互。这一方案的优势是&#xff0c;在功能方面确定并完成相关开发工作后&…

文章采集伪原创发布工具-147采集

在当今信息爆炸的时代&#xff0c;企业和个人都意识到了获取高质量、原创的内容的重要性。然而&#xff0c;手动撰写大量的原创内容是一项耗时费力的任务。为了解决这个问题&#xff0c;我向您介绍一款颠覆性的数据采集工具——147采集。 147采集是一款专业且高效的数据采集软件…

【干货】商城系统的重要功能特性介绍

电子商务的快速发展&#xff0c;商城系统成为了企业开展线上销售的重要工具。一款功能强大、用户友好的商城系统能够有效提升企业的销售业绩&#xff0c;提供良好的购物体验。下面就商城系统的重要功能特性作一些简单介绍&#xff0c;帮助企业选择合适的系统&#xff0c;打造成…

软件测试面试【富途面经分享】

目录 一面面经&#xff08;1h&#xff09; 二面面经 一面面经&#xff08;1h&#xff09; 一、对白盒黑盒灰盒测试的理解 答&#xff1a; 1、黑盒测试就当整个程序是个黑盒子&#xff0c;我们看不到它里面做了什么事情&#xff0c;只能通过输入输出看是否能得到我们所需的来…

Linux初识网络基础

目录 网络发展 认识“协议 ” 网络协议 OSI七层模型&#xff1a; TCP/IP五层&#xff08;或四层&#xff09;模型 网络传输基本流程 网络传输流程图&#xff1a; 数据包封装和封用 网络中的地址 认识IP地址&#xff1a; 认识MAC地址&#xff1a; 网络发展 1.独立…

【MySQL】增删查改基础

文章目录 一、创建操作1.1 单行插入1.2 多行插入1.3 插入否则替换更新1.4 替换replace 二、查询操作2.1 select查询2.2 where条件判断2.3 order by排序2.4 limit筛选分页结果 三、更新操作四、删除操作4.1 删除一列4.2 删除整张表数据 五、插入查询结果 CRUD : Create(创建), R…

vue去掉所有输入框两边空格,封装指令去空格,支持Vue2和Vue3,ElementUI Input去空格

需求背景 就是页面很多表单输入框&#xff0c;期望在提交的时候&#xff0c;都要把用户两边的空格去掉 ❌使用 vue 的指令 .trim 去掉空格 中间会输入不了空格&#xff0c; 比如我想输入 你好啊 中国, 这中间的空格输入不了&#xff0c;只能变成 你好啊中国 ❌在提交的时候使用…
最新文章