1、JavaScript概述 简称JS,是运行在【javascript解释器 或者 特定引擎中】的【解释型】【弱类型】【面向对象】脚本语言
1、javascript解释器:
1、浏览器自带js解释器
2、独立安装一个js解释器 - node.js时
2、编译型:运行程序之前,需要检查语法是否正确,如果不正确直接不允许运行,比如:java、c、c++、c# - 更加严格
解释器:运行程序之前,不要检查语法是否正确,直接运行,碰到错误就会停止运行,比如:javascript、php、node.js... - 更自由
3、js特点:
1、代码可用任何文本编辑器编写:vscode hbuilder 记事本...
2、解释型语言,无需编译
3、弱类型语言:不需要进行规定,你想放什么就放什么 - 爱自由
变量的数据类型是由值来决定的
强类型语言:先要规定你的变量要保存什么数据类型,才能往里面放入什么东西,比如java - 更严格
变量的数据是由 数据类型 来决定的 你能放入的值是什么
4、面向对象语言:程序员眼看任何东西都是一个对象:有了一句话叫做 万物皆对象
以后经常会见到一种语法
xx.xx 或 xx.xx()
一切东西都有自己的属性和方法:
对象名.属性名;
对象名.方法名();
5、js作用:
1、客户端的数据的计算:购物车
2、表单的数据验证:(手机号、身份证、邮箱、密码)
3、提供了事件(点击、鼠标移入移除、键盘...)
4、网页中一切css做不了的特效,都由js完成
5、和服务器端进行交互 ajax
2、javascript使用: 1、使用方式:2个 1、在HTML页面写上一个标签: - 临时测试/上课用
2、创建一个xx.js文件,在里面书写js代码,最后在HTML页面引入
<script src="xx.js文件路径">//此处不再支持书写代码了</script>
2、JS的调试语句:代码运行期间,如果碰到错误,会报错,但是后续代码就不会执行了,甚至如果只是逻辑错误不是语法错误,那并不会报错,我们需要一个方式去帮助我们找到错误何在
*1、在控制台输出日志:console.log(想要输出的东西);//打桩输出,疯狂打桩
2、在页面上进行输出:document.write(想要输出的东西); - 要不得,如果绑定上了事件,会将页面上所有的内容全都替换掉
3、弹出框显示:alert(想要输出的东西); - 会卡主整个页面,必须关闭后用户才能看到HTML和CSS
3、js的语法规范:是严格要求区分大小写的,不能乱写
比如:
console.log();//正确
console.Log();//错误
4、JS注释:作用:1、*提示程序员 2、玩
单行注释://
多行注释:/****/
5、*变量:
硬盘:保存文件、数据(外部存储器)
CPU:中央处理器:计算 暗黑3
内存:是【临时保存】程序在运行过程中,所需要用到的数据 - 本质来说我们的一个变量也是一个内存
内存空间:保存数据的一个地方
内存地址:内存空间的一个门牌号:大概长这样:0x00003021000310321,所以一般来说可以再起一个别名(变量名)
变量:值是可以改变的
何时:只要你以后需要经常使用的数据,都要先保存在一个变量中,以后使用变量名,相当于就是在使用变量的值了
语法:var 变量名=值;
比如: var name="代老湿";
var age=128;
var hobby="女";
特殊:
1、=:赋值符号,将=右边的数据放到=左边的变量名之中
var age=18;
age=19;//18=19;错误的理解,=左边的变量名只可能永远是变量名,不会变成变量的值
console.log(age);//19
2、如果只声明/创建/定义了,没有赋值的话,默认值为undefined(是一个垃圾,没有任何用处),记得一定要赋值。
3、取变量名不能随意,尽量的见名知意
不能以数字开头
var 1name="张三丰";
推荐:
var name;
不推荐:
var xingming; - 不推荐,降低我们的逼格
更不推荐:
var a; - 没有具体的意义
4、如果创建多个变量,中间的var可以省略,中间的;换为,,最后一个依然是;结束
5、面试题:如果是一个未声明的变量直接使用,会报错
如果是一个声明过的变量但是未赋值,会undefined
6、name变量名是一个关键字,里面只能放入字符串,哪怕你放的不是字符串,也会悄悄变成一个字符串
6、常量:一旦初始化后(第一次赋值),值不允许被修改
生活中的常量:
一天固定24个小时
一年固定365/366天
圆周率:3.1415926
语法:const 常量名=值; - 和变量除了关键字不同,没有别的不同了
7、*算术运算符:+ - * / %
其实前四个运算符和小时候一模一样
但是特殊:
1、%:取余,俗称模,两个数相除,但是不取商,而取余数
5%2 ==> 1
2%5 ==> 2
64%8==> 0
7%2 ==> 1
作用:1、*判断奇偶性
num%2;//结果为0说明是一个偶数,结果为1说明是一个奇数
2、获取某个数字的最后n位
1234%10 ==> 4
1234%100 ==> 34
1234%1000 ==> 234
2、***隐式转换:悄悄的转换,数据类型会发生变化,我们程序员看不见
常理来说只有数字才能参与算术运算,但是其实字符串也可以,一定要切忌以下几句话
*****默认运算符左右两边都会悄悄的变成一个数字,在运算
特殊:1、+运算,只要碰上一个字符串,则都变为字符串,+运算也不再+运算,变成了拼接字符串操作
2、-*/%运算,有字符串也可以转为数字,但是必须是纯数字组成的字符串才可以,只要包含了非数字字符,结果则为NaN(垃圾)
NaN:Not a Number:不是一个数字,但是确实是数字类型 - 不是一个有效数字,不在三界之中
NaN参与任何算术运算结果仍为NaN
NaN参与任何比较运算结果都为false
以后不希望见到NaN和undefined
小练习:1、创建两变量,一个变量保存半径,一个常量保存pi,计算其圆的面积和周长
面积:PI*r*r
周长:2*pi*r
8、*JS中数据类型:
1、原始/基本/值类型:5个
1、String - 字符串,取值有无数个,必须写"" 或者 ''
2、Number - 数字,取值有无数个,直接写个数字就行
3、Boolean - 布尔,取值只有两个,true 或 false,多半都是用于判断比较
4、Undefined - 取值只有一个默认值undefined,没有任何用处 - 祖师爷犯的一个错误
5、Null - 空,取值只有一个null,作用:释放变量、内存,节约内存空间
2、引用/对象类型:11个,每个对象都有很多的属性和方法等待我们去学习
扩展:
1、弹出一个用户输入框:var user=prompt("提示文字","默认值");
2、分支结构:根据条件的不同,选择一部分代码执行操作
1、一个条件 一件事,满足就做,不满足就不做
if(条件){
操作
}
2、一个条件 两件事,满足就做第一件,不满足就做第二件
if(条件){
操作
}else{
默认操作;
}
3、多个条件多件事,满足谁就做谁
if(条件1){
操作1
}else if(条件2){
操作2
}else if(条件3){
操作3
}else{
默认操作;
}
注意:1、else if你想写几句就写几句
2、最后的else其实也可以省略,但是如果条件都不满足的话则什么不会执行 - 不推荐,什么都不执行相当于我们的分支白写了
3、分支结构只要满足一个就不可能再走另一条路了