1、js起源
1)JavaScript诞生于1995年,它的出现主要是用于处理网页中的前端验证
2)所谓的前端验证,就是指检查用户输入的内容是否符合一定的规则
3)比如:用户名的长度,密码的长度,邮箱的格式等
4) 减少服务器的压力
2、js简史
1)JavaScript是由网景公司发明,起初命名为LiveScript,后来由于SUN公司的介入更名为JavaScript
2)1996年微软公司在其最新的IE3浏览器中引入了自己对JavaScript的实现JScript
3)于是在市面上存在两个版本的JavaScript,一个网景公司的javaScript和微软的Jscript
4)为了确保不同的浏览器上运行的JavaScript标准一致,所以几个公司共同定制了JS的标准命名为ECMAscript
3、什么是JavaScript
JavaScript是一种基于对象和事件驱动的脚本语言
JavaScript特点
1)交互、脚本语言、解释性语言
2)边执行边解释
JavaScript组成
javaScript:ECMAScript(javaScript语法) BOM(浏览器对象模型) DOM(页面文档对象模型)
4、初始JavaScript
JavaScript
布兰登.艾奇(BrendanEich,1961年~)
神奇的大哥在1995年利用10天完成JavaScript设计
网易公司最初命名为liveScript,后来在与Sun合作之后将其改名为JavaScript
现在也可以基于Node.js技术进行服务器端编程
JavaScript的作用
表单动态校验(密码强度检测)(JS产生最初的目的)
网页特效
服务器开发(Node.js)
桌面程序(Electron)
App(Cordova)
控制硬件-物联网(Ruff)
游戏开发(cocos2d-js)
HTML/CSS/JS的关系
HTML/CSS标记语言--描述语言
1)HTML决定网页结构和内容(决定看到什么),相当于人的身体
2)CSS决定网页呈现给用户的模样(决定好不好看),相当于给人穿衣服、化妆
JS脚本语言--编程类语言
1)实现业务逻辑和页面控制(决定功能),相当于人的各种动作
浏览器执行JS简介
浏览器分成两部分,渲染(展示)引擎和JS引擎
渲染引擎:用来解析HTML与CSS,俗称内核,比如chrome浏览器的bink,老版本的webkit
JS引擎:也称为JS解释器。用来读取网页中的JavaScript代码,对其处理后运行,比如chrome浏览器的V8引擎
浏览器本身并不会执行JS代码,而是通过内置JavaScript引擎(解释器)来执行Js代码。JS引擎执行代码时逐行解释每一句源码(转换为机器语言)
然后由计算机执行,所以JavaScript语言归为脚本语言,会逐行解释执行。
5、JavaScript组成
BOM:Browser(浏览器) Object(对象) Model(模型)(浏览器对象模型)
提供了独立于内容与浏览器窗口进行交互的对象
DOM:Document(文档) Object Model(文档对象类型)
是HTML文档对象模型(HTML DOM)定义的一套标准方法,用来访问和操作HTML文档
6、JavaScript书写位置
目标:知道如何向页面添加JavaScript
CSS位置
行内样式表
内部样式表
外部样式表
JavaScript位置
内敛JavaScript
内部JavaScript
外部JavaScript
1)内部JavaScript
直接写在html文件里,用在script标签包住
规范:script标签写在<body>上面
拓展:alert("你好,js")页面弹出警告对话框
2)外部JavaScript
代码写在以.js结尾的文件里
语法:通过script标签,引入到html页面中
注意事项:
1)script标签中间无需写代码,否则会被忽略
2)外部JavaScript会使代码更加有序,更易于复用,且没有了脚本的混合,HTML也会更加易读,因此这是个好的习惯
3)如果一旦出现外部引入js,在<script></script>写js无效
3)内联(行内)JavaScript
代表写在标签内部
例如:
<body>
<button οnclick="alert('点我~~~')">点我月薪2个W</buttom>
</body>
语法:
注意:此处作为了解即可,但是后面vue框架会使用这种模式
总结
1.JavaScript三种书写位置
内部
外部
内联
2.注意事项
a.书写的位置尽量写到文档末尾</body>前面
b.外部js标签中间不要写代码,否则会被忽略
课堂练习
页面弹框课堂练习
需求:请用外部和内部两种javaScript书写方式,页面弹出:努力,奋斗
时间:5分钟
7、JavaScript注释
1、单行注释
符合://
作用://右边这一行的代码会被忽略
快捷键:ctrl+/
特点:
一次只能注释一行
可以重复注释
2、多行注释
符号:/**/
作用:在/*和*/之间的所有内容都会被忽略
快捷键:shift+alt+A
特点:
更常见的多行注释是这种写法
可以任意换行
多少行都可以
8、JavaScript结束符
结束符
1)代表语句的结束
2)英文分号
3)可写可不写(要求写)
4)换行符(回车)会被识别成结束符,所以一个完整的语句,不要手动换行
5)因此在实际开发中有许多人主张书写JavaScript代码时省略结束符
6)但是为了风格统一,要写结束符就每句都写,要么每句都不写(按照团队要求)
总结:
JavaScript注释有哪两种
单行注释
多行注释
javaScript结束符注意点
结束符是?
分号;
结束符可以省略吗?
可以,因为js中换行符(回车)会被识别成结束符
但为了风格统一,要写结束符就每句都写,要么每句都不
9、js的三种弹框
1) alert:警告
alert("123");
2)confirm:确认
confirm() 方法用于显示一个带有 指定消息 和 确认及取消按钮 的对话框
如果访问者点击"确定",此方法返回true,否则返回false
true 真,正确
false 假,错误
confirm("确定删除吗?")
3)prompt 促使
prompt() 方法用于显示可提示用户进行输入的对话框
这个方法返回用户输入的字符串
prompt(参数1,参数2);
prompt(msg,defaultText);
参数描述:
msg 可选。要在对话框中显示的纯文本(而不是 HTML 格式的文本).
defaultText 可选。默认的输入文本
10、输出内容
1、console.log()输出到控制台
2、doucument.write()输出到浏览器
11、数据类型简介
为什么需要数据类型
在计算机中,不同的数据所占用的存储空间不同的,为了便于把数据分成所需内存大小不同的数据,
充分利用存储空间,于是定义了不同的数据类型
简单来说,数据类型就是数据的类型型号,比如姓名"张三",年龄18,这些数据的类型是不一样的。
变量的数据类型
变量是用来存储值得所在处,它们有名字和数据类型,变量的数据类型决定了如何将代表这些值得位存储到
计算机的内存中,javaScript是一种弱类型或者说动态语言。这意味着不用提前声明变量的类型,在程序运行
过程中,类型会被自动确定。
12、数据类型
基本类型:字符串(String)、数值(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)符号(Symbol)复合(Object)
typeOf()操作符
介于JavaScript是松散类型的,因此需要有一种手段来检测给定变量的数据类型----typeof()就是负责提供者方面信息的操作符
对一个值使用typeof操作符可能返回下列某个字符串
13、变量的数据类型
变量是用来存储值得所在处,它们有名字和数据类型。变量的数据类型决定了如何将代表这些值得位存储到计算机的内存中。JavaScript是一种弱类型或者说动态语言。
这意味着不用提前声明变量的类型,在程序运行过程中,类型会被自动确定
var age = 10; //这是一个数字型
var areYouOk = '是的'; //这是一个字符串
在代码运行时,变量的数据类型是由js引擎根据=右边变量值得数据类型来判断的,运行完毕之后,变量就确定了数据类型
JavaScript拥有动态类型,同时也意味着相同的变量可用作不同的类型:
var x=6; //x为数字
var x='Bill'//x为字符串
14、变量
A.什么是变量
变量就是用来存储变化着的量的一个容器
本质:变量是程序在内存中申请的一块用来存放数据的空间
白话:变量就是一个装东西的盒子
通俗:变量是用于存放数据的容器。我们通过变量名获取数据,甚至数据可以修改
B.变量的使用
变量在使用时分为两个部分:1.声明变量 2.赋值
C.声明变量的方式
声明一个变量 需要一个关键字(词) var
1)先声明变量再赋值
var width;
width=10;
2)同时声明和赋值变量
var userName = "六月";
var i,j,k = 15;
3)不声明直接赋值
userName = "六月";
i = 1;
4)同时赋值
var e=7,f=7,g=7;
console.log("e:",e);
console.log("f:",f);
console.log("g:",g);
)5、同时赋值
var e=f=g=6;
console.log("e:",e);
console.log("f:",f);
console.log("g:",g);
15、运算符
1)运算符
运算符也称为操作符,是用于实现赋值、比较和执行算数运算等功能的复合
2)算数运算符
概念:算术运算使用的符号,用于执行两个变量或值的算术运算。
+ - * / %
浮点数的精度问题
浮点数值得最高精度是17位小数,但在进行算术计算时精确度远远不如整数
var result = 0.5+0.2;
console.log(0.07*100);
所以:不要直接判断两个浮点数是否相等!
3)递增和递减运算符
如果想要反复给数字变量添加或减去1,可以使用递增(++)和递减(--)运算符来完成
注意:递增和递减运算符必须和变量配合使用
递增运算符
前置递增运算符
++num前置递增,就是自加1,类似于num=num+1,但是++num写起来更简单。
使用口诀:先自加,后返回值
4)比较运算符
比较运算符(关系运算符)是两个数据进行比较时所使用的运算符,比较运算后,会返回一个布尔值(true/false)作为比较运算的结果
5)逻辑运算符
逻辑运算符是用来进行布尔值运算的运算符,其返回值也是布尔值,后面开发中经常用于多个条件的判断
短路运算(逻辑中断)
短路运算的原理:当有多个表达式(值)时,左边的表达式值可以确定结果时,就不再继续运算右边的表达式的值
逻辑与
语法:表达式1&&表达式2
如果第一个表达式的值为真,则返回表达式2
如果第一个表达式的这为假,则返回表达式1
逻辑或
语法:表达式1||表达式2
如果第一个表达式的值为真,则返回表达式1
如果第一个表达式的值为假,则返回表达式2
6)赋值运算符
用来把数据赋值给变量的运算符
7)运算符优先级
16、命名规范
1、字母数字下划线,不能以数字开头
2、不能使用中文(不建议使用中文)
3、严格区分大小写
4、不能使用关键字,保留字
5、驼峰命名法 tuoFengMingMingFa
17、数据类型转换
什么是数据类型转换
使用表单、prompt获取过来的数据默认是字符类型的,此时就不能直接简单的进行加法运算,而需要转换变量的数据类型。
通俗来说,就是把一种数据类型的变量转换成另外一种数据类型。
我们通常会实现3种方式的转换
1)转换为字符串类型
a)toString() 转成字符串 var num =1; alert(num.toString());
b)String() 转成字符串 var num =1; alert(String(num));
c)加号拼接字符串 和字符串拼接的结果都是字符串 var num = 1; alert(num+"我是字符串");
注意:
toString()和String()使用方式不一样
三种转换方式,我们更喜欢用第三种加号拼接字符串转换方式,这一种方式也称为隐式转换(隐式转换也叫私下转换,非常隐秘的转换)
2)转换为数字类型(重点)
a)parseInt(string)函数 将string类型转换成整数数值型 parseInt("78");
b)parseFloat(string)函数 将string类型转成浮点数数值型 parseFloat("78.21");
c)Number()强制转换成函数 将string类型转换为数值型 Number("21");
d)Js隐式转换(- * /) 利用算术运算隐式转换为数值型 '12'-0
3)转换为布尔类型
a)Boolean() 其他类型转成布尔值
注意:代表空、否定的值会被转换为false,
如:0、NaN、null、undefined false ''
其余值都会被转换为true
console.log(Boolean(''));//false
console.log(Boolean(0));//false
console.log(Boolean(NaN));//false
console.log(Boolean(Null));//false
console.log(Boolean(undefined));//false
console.log(Boolean('你好'));//true
console.log(Boolean(12));//true