Javascript 第一天

95 阅读7分钟

1、JavaScript概述 简称JS,是运行在【javascript解释器 或者 特定引擎中】的【解释型】【弱类型】【面向对象】脚本语言

1、javascript解释器:
	1、浏览器自带js解释器
	2、独立安装一个js解释器 - node.js时

2、编译型:运行程序之前,需要检查语法是否正确,如果不正确直接不允许运行,比如:java、cc++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、分支结构只要满足一个就不可能再走另一条路了