这一部分都是比较基础的,看完你可能觉得还是对js根本不了解,没关系。本身就是我的笔记,感兴趣可以搜搜真正大佬写的。
前面已经介绍过了,js是网页组成的一部分。
什么是js呢?
简单来说:js就是基于对象和事件驱动的,在浏览器端运行的脚本语言
js的作用:
js的主要作用:为页面的标签元素添加相关的互动元素,
例如按钮,当我们添加js事件时,就能在点击按钮时出现弹窗、跳转等事件。
注:交互方式有 人机交互、前后端交互
js的组成三部分
ECMAScript:定义了JavaScript的语法规范,描述了语言的基本语法和数据类型
BOM:.(Browser Object Model)浏览器对象模型。有一套完整的可操作浏览器的API,通过BOM可以操作浏览器。
DOM (Document Object Model):文档对象模型,有一套成熟的可以操作页面元素的API,通过DOM可以操作页面元素。
如何使用js?
要想为页面添加js代码,有三种方式(和css类似):
第一种:行内样式。直接编写在标签内。
第二种:内部样式。在body标签内,通过添加<script></script>标签,在script编写js代码。
注:位置在</body>尾标签的上面,添加script标签。
这里就能测试一下我们前面写css样式时,为什么声明id选择器的id不能重名了!!!相信可能有的同学已经试过了,在css里面我们为多个不同标签名命名为同一个id时,css样式照样是会适用在每一个拥有id标签上生效。但是在js里面就不会,当出现多个相同id时,我们在js里面使用id选中这些标签,在页面中不会触发编写的js。
第三种:外部样式。我们可以类似css在文件夹里面再创建一个js文件夹,里面用于存放以 .js 结尾的js代码。
在页面内部使用<script></script>标签引入外部的js代码。
js里面的注释:
js里面的注释方式有两种,一种是单行注释、另一种是多行注释。
单行注释:” // " 单行注释,注释后的代码不会在页面中显示。—快捷键(ctrl+/)
多行注释:“ /* */ ” 多行注释,能够在这个里面可以编写多行注释—快捷键(alt+shift+/)
js中的输出:
js中的输出方式,网页内输出、控制台输出、弹窗输出。
1.网页将内容输出在网页内:———document.write("")
2.使用弹窗输出内容:———alert("")
弹窗的种类:警告框、确认框、输入框。
弹窗输入框的编写:
3.在控制台打印内容:———console.log("")
js中的常量与变量
常量:
在代码中存在一些不会变化的值,我们称这些值为常量。
先给大家一个思考,想一想对于这些不会变化的值,我们为什么要设定一个常量给他们,而不是在编写时直接将这些值写入写死?
原因:之所以编写一个age常量,是因为当编写的足够长,这个常量多次出现时,我们可以使用age替代。如果像20这种短数值还能写一写,但是万一是像身份证一类的就会很容易出错,这个时候age常量的优势就能体现出来了。使用常量时,当我们输错还会给我们提醒。
变量:
在编写代码时我们希望发生变化的值,我们同样可以给他一个变量,避免来回的修改。
例如:我们写的页面中用户的生日,我们编写时就需要为这个设置一个变量,让我们能通过代码来对值进行更改,要不然就需要我们一年一改,万一是时间、股票类的,那不是需要人24小时没有任何休息的进行更改呀。
变量能实现的数据类型:
1.数值型
var str=123;可以通过var定义数值变量,可以参与正常的算术运算。
2.字符型
var str=“123”;这样定义的是123字符串,使用typeof()对str进行判断时,会显示String
3.布尔类型
布尔类型一共有两个值:true和false。这种值常出现在判断类结果后
4.null空 类型
null类型,有两个作用。一、用于占位;二、用于清空数据。
5.undefined类型
对于定义的变量,但是没有进行赋值时,就会打印undefined类型。
打印时会出现undefined的情况:
1.在使用函数时,当我们传递的实参数量小于定义的形参数量时,为赋值的形参会显示。
2.使用函数时,如果return返回值为空时,赋值给其他变量时也会打印undefined
6.其他的复杂数据类型
复杂数据类型里面有:函数、对象、数组、正则等等。
检查数据类型:
1.typeof(),用来检查变量的数据类型。常见的几种有:Number(数值型)、String(字符型)、Object(空型)、Undefined(undefined类型)、Boolean(布尔类型)、function(函数类型)。
null的数据类型为object原因,按照计算机的2进制来看,null是全部为0,object类型前几位也是0.
2.isNaN(),用来判断一个值在转化为数值时,是否能转化为NaN,如果在字符转化为NaN,返回值为true,如果存在能转化为数值的字符(例如,true、null等),返回值都是false。(可以先看转换部分,再来理解这部分内容。)
常见数据类型之间的转换:
强制转化为数值类型:
1.字符类型强制转化为数值类型
a.纯数字字符串类型强转为数值类型,直接转为对应的值,例如:"123"-->123
b.不是纯数字字符类型强转数值类型,直接转为NaN
c.空字符串和空格字符串都转化为0.
2.布尔类型强制转化为数值类型
1.布尔类型值为true时,强制转化为数值类型对应的是1;
2.布尔类型值为false时,强制转化为数值类型对应的是0;
undefined类型,强制转化为数值类型,转化为NaN
null类型,强制转化为数值类型,转化为0
强制转化为字符串类型:
对于其他的数值类型转化为字符传类型是,只需要在值上添加双引号""。例如: true -"true". 123-"123".
强制转换的方法: String(待转类型值)、变量名.toString 0 :
强制转化为布尔类型:
1.数值类型强制转化为布尔类型
只有0和NaN转化为false,其余的数值都会转化为true.
2.字符类型强转布尔类型
只有空字符串强转false,其余的都转化为true
3.undefined类型和null类型只会转化为false。
隐式转换:
不同于强制类型转换,隐式转换是在计算过程中电脑自己进行的转换。
算术运算:
a.数值类型+数值类型 正常求和运算
b.数值类型+字符类型 隐式转换,数值转换为字符,然后进行拼接
c.字符类型+字符类型 直接拼接
比较运算:
a.两个数值类型进行比较运算,直接进行比较
b.—个数值类型和一个字符类型进行比较,字符类型隐式转换成数值类型,进行比较
c.都是字符类型,按照字符顺序进行比较,第一个和第一个比较、第二个和第二个进行比较....…第n个和第n个进行比较、只要存在false就返回false。
运算符
数学运算符:+、-、*、/、%
加法:两种含义,
1:拼接,当加号两边都是字符串类型时,str+“123”=str123;
2.加法,当加号两边都是数值类型时既能正常运算:3+4=7
减法:只能按照算术运算来算,对于字符串能转化的转化,转化不了的会报错
乘法:只能按照算术运算来算,对于字符串能转化的转化,转化不了的会报错
除法:只能按照算术运算来算,对于字符串能转化的转化,转化不了的会报错
取余:只能按照算术运算来算,对于字符串能转化的转化,转化不了的会报错
字符与数值的转换:
1.对于布尔类型,true转化为1;false转化为0;
2.对于字符类型,带引号的数字字符,直接转化为对应的数字;非数字字符转化为NaN
3.Null空类型,转化为数值类型时,值为0
4.undefined类型转化时,数值为NaN
5.数值类型转化为布尔类型时,0和n转化为false,其余的值都是true
只要在算术运算中出现NaN,结果都是NaN,如果存在未定义的变量,则报错。
赋值运算符:=、+=、-=、*=、/=、%=
“=” ,赋值符,将等号右边的值赋值给等号右边。b=2,a=b —> a=2
“+=”,简写形式,正常的形式是 a = a+1 —> a += 1;
“-=”,“*=”,“/=”,“%=” 都是和上述一样。
比较运算符:>、<、>=、<=、!=、==
">"、"<"、">="、"<="和我们所学的都一样,大于、小于、大于等于、小于等于
“!=” 不等号,A != B ,A不等于B
“==”判断是否相等,A==B,A等于B吗?
逻辑运算符:与(&&)、或(||)、非(!)
判断中常见,通常是符合条件适用。例如:即使男人又是女人的人进(男&&女)、男人和女人都能进(男||女)、人不能进(!人)
自增自减运算符
++自增:
++在前,例如++a、++b。++在前,表示先进行自加而后用增加过的值再参与运算。例如:a=10; b= ++a;所以a=11; b= 11;
++在后,例如a++、b++。++在后,表示先进行赋值、输出、计算然后再自身增加。例如:a=10; b=a++;所以: a=11; b=10;
--自减:
--在前,例如--a、--b。--在前,表示先进行自减而后使用改变过的值参与别的运算。例如: a=10; b= --a;所以a=9; b=9
--在后,例如a--、b--。--在后,表示先进行赋值、输出、计算然后在进行自减。例如: a=10; b=a--:所以:a=9; b=10