javascript基础
一. JavaScript介绍
- 目标:知道JavaScript是什么和基本规范
学习路径
- JavaScript是什么
- JavaScript书写位置
- JavaScript的注释
- JavaScript的结束符
- 输入和输出语句
1.2 JavaScript书写位置
- 目标:知道如何向页面添加 JavaScript | cSS书写位置: | JavaScript书写位置: | | :—-: | :—-: | | 行内样式表 | 行内JavaScript | | 行内样式表 | 行内JavaScript | | 行内样式表 | 行内JavaScript |
行内JavaScript
代码写在以.js结尾的文件里
语法:通过script标签,引入到html页面中
注意:script标签中间无需写代码,否则会被忽略!
<body><!--外联形式:通过script的src属性引入独立的.js文件--><script: src="demo.js"><lscnipt></body>
1.5 JavaScript输入输出语句
目标:能写出常见JavaScript输入输出语句
- 输出和输入也可理解为人和计算机的交互,用户通过键盘、鼠标等向计算机输入信息,计算机处理后再展示结果给用户,这便是一次输入和输出的过程。
输出语句:
document.write(‘要输出的内容”);
- 向body内输出内容
- 如果输出的内容写的是标签,也会被解析成网页元素
alert(‘要输出的内容’);
- 页面弹出警告对话框
prompt(‘要输入的内容’);
目标:理解变量是计算机存储数据的“容器”,掌握变量的声明方式
学习路径
- 1.变量是什么
- 变量基本使用
- ☆变量的本质
- 变量命名规则与规范
2.2变量的基本使用
目标:掌握变量的声明方式
1.声明变量:
要想使用变量,首先需要创建变量(专业说法:声明变量)语法:
let变量名
3.更新变量:
- 变量赋值后,还可以通过简单地给它一个不同的值来更新它。 ```css /声明了一个age变量,同时里面存放了18这个数据 let age = 18 //变量里面的数据发生变化更改为19 age = 19 //页面输出的结果为19 document.write(age)
//声明了一个age变量,同时里面存放了18这个数据 let age= 18 //这里不允许多次声明一个变量,没有理由重新声明变量 let age.= 19 //输出会报错 document.write(age)
```javascript<script>// 变量的作用:用来存储数据的容器// 声明变量 变量名// let age//就是将 18这个数据存入草age这个变量里边去 = 赋值运算符// age = 18//变量不要加引号 " "// document.write(age)--------------//声明变量且赋值,变量的初始化let sex = '男'//变量的更新 用let声明的变量可以多次赋值sex = '女'sex = '人妖'document.write(sex)</script>
总结:
- 变量就是一个容器,用来存放数据的。
- 变量通过let来声明通过=实现赋值。
- 变量通过变量名来获得里面的数据。
- 变量不允许多次声明。
- 最早变量声明使用var关键字,后期我们讲解var和 let区别
变量小练习:
<script>//用户在页面输入姓名,在页面上输出// 将用户输入的名字(数据)保存到uname这个变量里边去let uname = prompt('请输入您的姓名')document.write(uname)</script>
2.3 变量的本质
目标:能够说出变量的本质是什么
- 内存:计算机中存储数据的地方,相当于一个空间
- 变量:是程序在内存中申请的一块用来存放数据的小空间
2.4变量命名规则与规范
目标:能写出符合规范的变量名
- 规则:必须遵守,不遵守报错
规范:建议,不遵守不会报错,但不符合业内通识
规则:
- 不能用关键字
- 关键字:有特殊含义的字符,JavaScript内置的一些英语词汇。例如:let、var、if、for等
- 只能用下划线、字母、数字、$组成,且数字不能开头
- 字母严格区分大小写,如Age和l age是不同的变量
规范:
- 起名要有意义
- 遵守驼峰命名法
- 第一个单词首字母小写,后面每个单词首字母大写。例:userName
<script>//1.不能使用关键词来定义变量名//2.let fot= 20// 2.只能 —,字母,数字,$组成,不能是数字开头// let $ = 20//document.write($)// 3.严格区分大小写let age = 12let AGE = 20document.write(AGE)// 4.驼峰命名法let userName = 45</script>
//用户在页面输入姓名,性别,年龄,在页面中输出案例
<script>//用户在页面输入姓名,性别,年龄,在页面中输出let userName = prompt('请输入您的姓名')let sex = prompt('请输入您的性别')let age = prompt('请输入您的年龄')document.write(userName, sex, age)//同时声明多个变量且赋值,逗号隔开let pink = '王浩'blue = "大小"//在页面上输出多个变量document.write(pink, blue)</script>
二.数据类型
目标:知道JS里的数据类型有哪些,为后面的计算打基础
学习路径
- 数据类型
- 控制台输出语句和检测数据类型
<script>//1.数字(数字)类型 number 数字类型不用加引号let num = 20let num2 = -12.3//2.字符串类型 string 凡是用""包裹起来的都是字符串类型// 字符串必须加引号let uname = '小六'let pig = '猪坚强'let str = '12'let str = `洗洗`// 3.真假 布尔类型 只有两个值 true(真,对,开) false(假,错,关) Booleanlet boo = truelet boo2 = false//4.undefined 声明了变量没有赋值 默认值就是undefinedlet userdocument.write(user)//变量不生名,直接使用会报错//document.write(abc)//变量不声明,只赋值,不推荐使用h = 20document.write(h)</script>
3.1数据类型–字符串类型(string)
通过单引号( “)、双引号(“”)或反引号包裹的数据都叫字符串,单引号和双引号没有本质上的区别,推荐使用单引号。
let user_name = '小明";//使用单引号let gender =“男";//使用双引号let str = '123';//看上去是数字,但是用引号包裹了就成了字符串了let str1 ='' ;/这种情况叫空字符串
注意事项:
- 无论单引号或是双引号必须成对使用
- 单引号/双引号可以互相嵌套,但是不以自已嵌套自已(口诀:外双内单,或者外单内双)
- 必要时可以使用转义符\,输出单引号或双引号
3.2 检测数据类型
<script>let age = 18let uname = '猪八戒'let flag = truelet pig//控制台输出语句//typeof 检测数据类型console.log(typeof age); //numberconsole.log(typeof uname); //stringconsole.log(typeof true); //booleanconsole.log(typeof pig); //undefined</script>
3.3 交换两个变量的值
<script>//核心思路:使用一个临时变量 用来做中间的存储//两个变量 num1 = 10 num2 = 20 交换2个变量的值//交换之后 num1里边存的是20 num2里边存的是10let num1 = 10,num2 = 20let temp//将num1的值10赋值给temp,temp里边的值是 ~~~ 10temp = num1//将num2的值20赋值给num1,num1里边的值就是 ···20num1 = num2// 将temp 的值,赋值给num2,num2的值就是 ~~~ 10num2 = tempconsole.log(num1, num2);</script></body>
3.4 算数运算符
小案例
//用户输入的半径,在页面中显示圆的面机 p*r*rlet r = prompt('请输入圆的半径')let p = 3.14let area = p * r * rdocument.write(area)
显示姓名和年龄的案例
let uname = prompt('请输入您的姓名')let age = prompt('请输入您的年龄')document.write('大家好,我叫' + uname + '今年' + age + '岁')/*另一种写发*/document.write(`大家好,我叫${uname}今年 ${age}`)
三、数据类型的转换
1.1 隐士数据类型转换
某些运算符被执行时,系统内部自动将数据类型进行转换,这种转换称为隐式转换。
- 规则:≥+号两边只要有一个是字符串,都会把另外一个转成字符串
- 除了+以外的所有算术运算符都会把数据转成数值类型
- 缺点:转换类型不明确,靠经验才能总结
1.2 显示数据类型转换
<script>//显示数据类型let a = '30'let b = 20let c = truelet d = falselet e = '啊哈哈哈'let f//在转换类型(运算)的时候,true是1,false是0let num1 = Number(a)console.log(num1, typeof num1)//在转换类型(运算)的时候,true是1,false是0let num2 = Number(d)console.log(num2, typeof num2)let num3 = Number(e)// NaN not a number 不是一个数字,代表非数字,还是数字类型let num4 = Number(f)console.log(num4, typeof num4)</script>
JavaScript 基础 - 第1天
了解变量、数据类型、运算符等基础概念,能够实现数据类型的转换,结合四则运算体会如何编程。
- 体会现实世界中的事物与计算机的关系
- 理解什么是数据并知道数据的分类
- 理解变量存储数据的“容器”
- 掌握常见运算符的使用,了解优先级关系
- 知道 JavaScript 数据类型隐式转换的特征
一、介绍
掌握 JavaScript 的引入方式,初步认识 JavaScript 的作用
1.1 引入方式
JavaScript 程序不能独立运行,它需要被嵌入 HTML 中,然后浏览器才能执行 JavaScript 代码。通过 script 标签将 JavaScript 代码引入到 HTML 中,有两种方式:
内联形式
通过 script 标签包裹 JavaScript 代码
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>JavaScript 基础 - 引入方式</title></head><body><!-- 内联形式:通过 script 标签包裹 JavaScript 代码 --><script>alert('嗨,欢迎来传智播学习前端技术!');</script></body></html>
外联形式
一般将 JavaScript 代码写在独立的以 .js 结尾的文件中,然后通过 script 标签的 src 属性引入
// demo.jsdocument.write('嗨,欢迎来传智播学习前端技术!');
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>JavaScript 基础 - 引入方式</title></head><body><!-- 外联形式:通过 script 的 src 属性引入独立的 .js 文件 --><script src="demo.js"></script></body></html>
如果 script 标签使用 src 属性引入了某 .js 文件,那么 标签的代码会被忽略!!!如下代码所示:
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>JavaScript 基础 - 引入方式</title></head><body><!-- 外联形式:通过 script 的 src 属性引入独立的 .js 文件 --><script src="demo.js">// 此处的代码会被忽略掉!!!!alert(666);</script></body></html>
1.2 注释和结束符
通过注释可以屏蔽代码被执行或者添加备注信息,JavaScript 支持两种形式注释语法:
单行注释
使用 // 注释单行代码
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>JavaScript 基础 - 注释</title></head><body><script>// 这种是单行注释的语法// 一次只能注释一行// 可以重复注释document.write('嗨,欢迎来传智播学习前端技术!');</script></body></html>
多行注释
使用 /* */ 注释多行代码
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>JavaScript 基础 - 注释</title></head><body><script>/* 这种的是多行注释的语法 *//*更常见的多行注释是这种写法在些可以任意换行多少行都可以*/document.write('嗨,欢迎来传智播学习前端技术!');</script></body></html>
注:编辑器中单行注释的快捷键为 ctrl + /
结束符
在 JavaScript 中 ; 代表一段代码的结束,多数情况下可以省略 ; 使用回车(enter)替代。
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>JavaScript 基础 - 结束符</title></head><body><script>alert(1);alert(2);alert(1)alert(2)</script></body></html>
JavaScript 跟 HTML 和 CSS 一样,会忽略【一些】空白符,但是换行符(回车)会被识别成结束符 ;,因此在实际开发中有许多人主张书写 JavaScript 代码时省略结束符 ;
1.3 输入和输出
输出和输入也可理解为人和计算机的交互,用户通过键盘、鼠标等向计算机输入信息,计算机处理后再展示结果给用户,这便是一次输入和输出的过程。
举例说明:如按键盘上的方向键,向上/下键可以滚动页面,按向上/下键这个动作叫作输入,页面发生了滚动了这便叫输出。
输出
JavaScript 可以接收用户的输入,然后再将输入的结果输出:
alert()、document.wirte()
以数字为例,向 alert() 或 document.write()输入任意数字,他都会以弹窗形式展示(输出)给用户。
输入
向 prompt() 输入任意内容会以弹窗形式出现在浏览器中,一般提示用户输入一些内容。
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>JavaScript 基础 - 输入输出</title></head><body><script>// 1. 输入的任意数字,都会以弹窗形式展示document.write('要输出的内容');alert('要输出的内容');// 2. 以弹窗形式提示用户输入姓名,注意这里的文字使用英文的引号prompt('请输入您的姓名:');</script></body></html>
二、变量
理解变量是计算机存储数据的“容器”,掌握变量的声明方式
变量是计算机中用来存储数据的“容器”,它可以让计算机变得有记忆,通俗的理解变量就是使用【某个符号】来代表【某个具体的数值】(数据)
<script>// x 符号代表了 5 这个数值x = 5;// y 符号代表了 6 这个数值y = 6;//举例: 在 JavaScript 中使用变量可以将某个数据(数值)记录下来!// 将用户输入的内容保存在 num 这个变量(容器)中num = prompt('请输入一数字!');// 通过 num 变量(容器)将用户输入的内容输出出来alert(num);document.write(num);</script>
2.1 声明和赋值
声明
声明(定义)变量有两部分构成:声明关键字、变量名(标识)
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>JavaScript 基础 - 声明和赋值</title></head><body><script>// let 变量名// 声明(定义)变量有两部分构成:声明关键字、变量名(标识)// let 即关键字,所谓关键字是系统提供的专门用来声明(定义)变量的词语// age 即变量的名称,也叫标识符let age;</script></body></html>
关键字是 JavaScript 中内置的一些英文词汇(单词或缩写),它们代表某些特定的含义,如 let 的含义是声明变量的,看到 let 后就可想到这行代码的意思是在声明变量,如 let age;
let 和 var 都是 JavaScript 中的声明变量的关键字,推荐使用 let 声明变量!!!
赋值
声明(定义)变量相当于创造了一个空的“容器”,通过赋值向这个容器中添加数据。
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>JavaScript 基础 - 声明和赋值</title></head><body><script>// 声明(定义)变量有两部分构成:声明关键字、变量名(标识)// let 即关键字,所谓关键字是系统提供的专门用来声明(定义)变量的词语// age 即变量的名称,也叫标识符let age;// 赋值,将 18 这个数据存入了 age 这个“容器”中age = 18;// 这样 age 的值就成了 18document.write(age);// 也可以声明和赋值同时进行let str = 'hello world!';alert(str);</script></body></html>
2.2 关键字
JavaScript 使用专门的关键字 let 和 var 来声明(定义)变量,在使用时需要注意一些细节:
以下是使用 let 时的注意事项:
- 允许声明和赋值同时进行
- 不允许重复声明
- 允许同时声明多个变量并赋值
- JavaScript 中内置的一些关键字不能被当做变量名
以下是使用 var 时的注意事项:
- 允许声明和赋值同时进行
- 允许重复声明
- 允许同时声明多个变量并赋值
大部分情况使用 let 和 var 区别不大,但是 let 相较 var 更严谨,因此推荐使用 let,后期会更进一步介绍二者间的区别。
2.3 变量名命名规则
关于变量的名称(标识符)有一系列的规则需要遵守:
- 只能是字母、数字、下划线、$,且不能能数字开头
- 字母区分大小写,如 Age 和 age 是不同的变量
- JavaScript 内部已占用于单词(关键字或保留字)不允许使用
- 尽量保证变量具有一定的语义,见字知义
注:所谓关键字是指 JavaScript 内部使用的词语,如 let 和var,保留字是指 JavaScript 内部目前没有使用的词语,但是将来可能会使用词语。
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>JavaScript 基础 - 变量名命名规则</title></head><body><script>let age = 18; // 正确let age1 = 18; // 正确let _age = 18; // 正确// let 1age = 18; // 错误,不可以数字开头let $age = 18; // 正确let Age = 24; // 正确,它与小写的 age 是不同的变量// let let = 18; // 错误,let 是关键字let int = 123; // 不推荐,int 是保留字</script></body></html>
三、数据类型
计算机世界中的万事成物都是数据。
计算机程序可以处理大量的数据,为了方便数据的管理,将数据分成了不同的类型:
注:通过 typeof 关键字检测数据类型
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>JavaScript 基础 - 数据类型</title></head><body><script>// 检测 1 是什么类型数据,结果为 numberdocument.write(typeof 1);</script></body></html>
3.1 数值类型
即我们数学中学习到的数字,可以是整数、小数、正数、负数
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>JavaScript 基础 - 数据类型</title></head><body><script>let score = 100; // 正整数let price = 12.345; // 小数let temperature = -40; // 负数document.write(typeof score); // 结果为 numberdocument.write(typeof price); // 结果为 numberdocument.write(typeof temperature); // 结果为 number</script></body></html>
JavaScript 中的数值类型与数学中的数字是一样的,分为正数、负数、小数等。
3.2 字符串类型
通过单引号( '') 、双引号( "")或反引号包裹的数据都叫字符串,单引号和双引号没有本质上的区别,推荐使用单引号。
注意事项:
- 无论单引号或是双引号必须成对使用
- 单引号/双引号可以互相嵌套,但是不以自已嵌套自已
- 必要时可以使用转义符
\,输出单引号或双引号
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>JavaScript 基础 - 数据类型</title></head><body><script>let user_name = '小明'; // 使用单引号let gender = "男"; // 使用双引号let str = '123'; // 看上去是数字,但是用引号包裹了就成了字符串了let str1 = ''; // 这种情况叫空字符串documeent.write(typeof user_name); // 结果为 stringdocumeent.write(typeof gender); // 结果为 stringdocumeent.write(typeof str); // 结果为 string</script></body></html>
3.3 布尔类型
表示肯定或否定时在计算机中对应的是布尔类型数据,它有两个固定的值 true 和 false,表示肯定的数据用 true,表示否定的数据用 false。
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>JavaScript 基础 - 数据类型</title></head><body><script>// pink老师帅不帅?回答 是 或 否let isCool = true; // 是的,摔死了!isCool = false; // 不,套马杆的汉子!document.write(typeof isCool); // 结果为 boolean</script></body></html>
3.4 undefined
未定义是比较特殊的类型,只有一个值 undefined,只声明变量,不赋值的情况下,变量的默认值为 undefined,一般很少【直接】为某个变量赋值为 undefined。
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>JavaScript 基础 - 数据类型</title></head><body><script>// 只声明了变量,并末赋值let tmp;document.write(typeof tmp); // 结果为 undefined</script></body></html>
注:JavaScript 中变量的值决定了变量的数据类型。
四、运算符
理解运算符是计算机处理数据的最基本方式,掌握常见运算符的使用
运算符中 JavaScript 处理数据有最基本方式,如加、减、乘、除等。
4.1 数学运算符
数学运算符也叫算术运算符,主要包括加、减、乘、除、取余(求模)。
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>JavaScript 基础 - 运算符</title></head><body><script>// 1. 加法// 班级有男生31名,女生 23名,问全班总共多少人?let boy = 31;let girl = 23;// 合计 求和let total = boy + girl;console.log(total); // 结果为 54// 2. 减法// 全班总共 54 人,请假 2 人,问今日出勤人数?// 缺席 2 人let absence = 2;console.log(total - absence); // 结果为 52// 3. 乘法// 每天背两个单词,150天后共记住多少单词?let wordsPerDay = 3;console.log(wordsPerDay * 150); // 结果为 300// 4. 除法// 学费总计 1980元,学习 100天,平均每天学费多少钱?let fee = 22980console.log(fee / 100); // 结果为 198// 5. 取余// 全班总共 54人,按报名顺序以5个人为单位进行分组// 总共可以分成几组?// 最后一组多少人?console.log(total % 5); // 结果为 4/*********** 华丽的分隔线 ***********/// + 运算符有两层含义:// 除了上述的数学运算外// 还可以用于字符串的拼接let str1 = 'hello ';let str2 = 'world!';console.log(str1 + str2); // 结果为 hello world!</script></body></html>
4.2 优先级
同时使用多个运算符编写程序时,会按着某种顺序先后执行,我们称为优先级。优先级越高越先被执行,优先级相同时以书从左向右执行。
- 乘、除、取余优先级相同
- 加、减优先级相同
- 乘、除、取余优先级大于加、减
- 使用
()可以提升优先级
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>JavaScript 基础 - 运算符优先级</title></head><body><script>let a = 10;let b = 12;let t = 5;let f = 8;// * 的优先级高,所以先计算 b * t = 60// + 和 - 的优先级相同,从左向右执行console.log(a + b * t - f); // 结果为 62// * / % 优先级一致,从左向右执行console.log(b * t / a % t); // 结果为 1// 虽然 * 的优先级大于 + 但是通过 () 提升了优先级// 先执行 + 运算,再执行 * 运算console.log((t + f) * a); // 结果为 130</script></body></html>
五、类型转换
理解弱类型语言的特征,掌握显式类型转换的方法
在 JavaScript 中数据被分成了不同的类型,如数值、字符串、布尔值、undefined,在实际编程的过程中,不同数据类型之间存在着转换的关系。
5.1 隐式转换
某些运算符被执行时,系统内部自动将数据类型进行转换,这种转换称为隐式转换。
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>JavaScript 基础 - 隐式转换</title></head><body><script>let num = 13; // 数值let num2 = '2'; // 字符串// 结果为 132// 原因是将数值 num 转换成了字符串,相当于 '13'// 然后 + 将两个字符串拼接到了一起console.log(num + num2);// 结果为 11// 原因是将字符串 num2 转换成了数值,相当于 2// 然后数值 13 减去 数值 2console.log(num - num2);let a = prompt('请输入一个数字');let b = prompt('请再输入一个数字');alert(a + b);</script></body></html>
注:数据类型的隐式转换是 JavaScript 的特征,后续学习中还会遇到,目前先需要理解什么是隐式转换。
补充介绍模板字符串的拼接的使用
5.2显式转换
编写程序时过度依靠系统内部的隐式转换是不严禁的,因为隐式转换规律并不清晰,大多是靠经验总结的规律。为了避免因隐式转换带来的问题,通常根逻辑需要对数据进行显示转换。
Number
通过 Number 显示转换成数值类型,当转换失败时结果为 NaN(Not a Number)即不是一个数字。
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>JavaScript 基础 - 隐式转换</title></head><body><script>let t = '12';let f = 8;// 显式将字符串 12 转换成数值 12t = Number(t);// 检测转换后的类型// console.log(typeof t);console.log(t + f); // 结果为 20// 并不是所有的值都可以被转成数值类型let str = 'hello';// 将 hello 转成数值是不现实的,当无法转换成// 数值时,得到的结果为 NaN (Not a Number)console.log(Number(str));</script></body></html>
Boolean
布尔类型只有两个值,true 和 false,通过 Boolean 显式将其它数据类型转成布尔值。非零数值均被转成 true,非空字符串均被转成 true。
通过 Boolean 转换得到的布尔类型被称为真/假值,转换为 true 称为真值,转换为 false 称为假值。
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>JavaScript 基础 - 隐式转换</title></head><body><script>let zero = 0;// zero = '0';// 数值 0 会被转换为 false// 字符串 0 会被转成 trueconsole.log(Boolean(zero));let str1 = 'false';// 字符串 false 会被转换为 trueconsole.log(Boolean('false'));let empyStr = '';// 空字符串,会被转换为 falseconsole.log(Boolean(empyStr))// 能够通过 Boolean 转换为布尔类型的数据,被称为真/假值// 如果被转换为 true 则为真值// 如果被转换为 false 则为假值</script></body></html>
