1. JavaScript基础知识
写在前头的话,“JS学习笔记”是观看B站“【尚硅谷】JavaScript基础&实战丨JS入门到精通全套完整版”整理而成的。
1.1 输出语句
- 向浏览器写内容:
alert()
- 向计算机页面(body)写内容:
document.write()
- 向控制台写内容:
console.log()
1.2 JS语句编写位置
- 可以编写到script标签中
<script type="text/javascript">
//编写js代码
</script>
- 可以编写到标签的指定属性中
<button onclick="alert('hhh');">submit</button>
<a href="javascript:alert('aaa');">submit1</a>
- 可以将代码编写到外部的js文件中,然后通过
script
标签将其引入。script
标签一旦用于引入外部文件了,就不能在编写代码了,即使编写了浏览器也会忽略 ,如果需要则可以在创建一个新的script
标签用于编写内部代码 。
<script type="text/javascript" src="文件路径"></script>
1.3 基本语法
- 严格区分大小写
- JS中每条语句以
;
结尾。如果不写;
,浏览器会自动添加,但是会消耗一些系统资源, 而且有些时候,浏览器会加错。 - js函数声明不需要
;
,但是赋值语句要加;
function functionName(arg0,arg1,arg2){
//函数声明
}
var functionName=function(arg0,arg1,arg2){
//函数表达式
};(注意分号)
1.4 字面量和变量
- 字面量:不可改变的值
- 变量:保存字面量,值可任意改变
var a; //声明变量
a=1; //变量赋值
var b=2; //同时进行
- 标识符:JS中所有的可以自主命名的内容
- 可以含有数字、_、$
- 不能含有数字
- 不能是JS中的关键字和保留字
- 驼峰命名法,xxxYyyZzz
1.5 数据类型
1.5.1 简述
- 数据类型是指字面量的类型
- JS中共有六种数据类型,5基本+1引用
- String 字符串
- Number 数值
- Boolean 布尔值
- Null 空值
- Undefined 未定义
- Object 对象(引用数据类型)
- typeof运算符检查数据类型
var b = "123";
var c = null;
console.log(typeof b); //输出string
console.log(typeof c); //输出object,null表示空对象
1.5.2 详述
- String字符串:需要使用引号引起来,单引号或双引号均可。同类型引号不能嵌套。
// '\'表示转义字符
\' ==> '
\" ==> "
\n ==> 换行
\t ==> 制表符
\\ ==> \
//输出字符串
alert("str");
//输出变量
alert(str);
- Number:JS中所有的整数和浮点数都是Number类型。使用
typeof
检查一个Number类型的数据时,会返回”number”。(包括NaN 和 Infinity)
Number.MAX_VALUE JS中能表达的最大值
正无穷:Infinite
负无穷:-Infinite
非法数字:NaN
1.5.3 数据转换
-
转换string类型
- 方式一:调用被转换数据的
toString()
方法
var a = 123; a = a.toString(); //不适合null和undefined
- 方式二:调用
String()
函数
var a = 123; a = String(a); //对于Number Boolean String都会调用他们的toString()方法来将其转换为字符串,对于null值,直接转换为字符串”null”。对于undefined直接转换为字符串”undefined”
- 方式三:隐式的类型转换
var a = true; a = a + ""; //原理和String()函数一样
- 方式一:调用被转换数据的
-
转换为Number类型
- 方式一:调用
Number()
函数
- 字符串 > 数字
- 如果字符串是一个合法的数字,则直接转换为对应的数字
- 如果字符串是一个非法的数字,则转换为NaN
- 如果是一个空串或纯空格的字符串,则转换为0
- 布尔值 > 数字
- true转换为1
- flase转换为0
- 特殊类型 > 数字
- null转换为0
- undefined 转换为NaN
-
方式二:使用一元的+来进行隐式的类型转换
-
方式三:调用
parseInt()
或parseFloat()
函数,这两个函数专门用来将一个字符串转换为数字的。
如果对非String使用parseInt()
或parseFloat()
,它会先将其转换为String,然后再操作。
可以在parseInt()
函数中传递一个第二参数,来指定数字的进制
- 方式一:调用
var a = "123.456px";
var c = "123px56";
var b;
b = parseInt(a); //输出number类型123
b = parseInt(a,8); //输出值83
b = parseInt(c); //输出number类型123
b = parseFloat(a); //输出number类型123.456
-
Boolean转换
-
方式一:使用
Boolean()
函数- 转换情况:
- 字符串 > 布尔:除了空串其余全是true
- 数值 > 布尔:除了0和NaN其余的全是true
- null、undefined > 布尔:都是false
- 对象 > 布尔:都是true
- 转换情况:
-
方式二:隐形转换,为任意的数据类型做两次非运算,即可将其转换为布尔值
var a = "hello"; a = !!a;
-
1.6 运算符
1.6.1 算数运算符
-
包括:+、-、*、/、%
-
除了加法以外,对非Number类型的值进行运算时,都会先转换为Number然后在做运算。
而做加法运算时,如果是两个字符串进行相加,则会做拼串操作,将两个字符连接为一个字符串。
任何值和字符串做加法,都会先转换为字符串,然后再拼串。
var c = 123;
c = c + ""; //加法拼串,用来string隐式转换
console.log(typeof c); //输出string
console.log(c); //输出123
console.log("c = "+c); //输出c = 123
var b = "123";
b = b - 0; //number隐式转换
1.6.2 关系运算符
- 任何值和NaN作任何比较都是false
- 如果比较的两个值都是字符串,此时会比较字符串的Unicode编码,而不会转换为Number。 比较时,一位位比,若两位一样,则比较下一位,可以借用它来进行英文排序。
- 在字符串(JS)中使用转义字符输入Unicode编码,
\u四位编码
;在网页(body)中使用Unicode编码,&#编码
,编码为十进制。
1.6.3 相等运算符
==
,undefined衍生自null,所以undefined==null
为true
;NaN不和任何值相等,包括本身。==
和!=
会自动转换类型;===
和!==
不会做类型转换。switch…case…
语句在执行时,会依次将case后的表达式的值和switch后的表达式的值进行全等比较,
如果比较结果为false
,则继续向下比较。如果比较结果为true
,则从当前case处开始向下执行代码。(不加break
时,判true
的case后的所有代码都会执行)
如果所有的case判断结果都为false
,则从default
处开始执行代码。- break关键字,会立即终止距离他最近的那个循环语句。continue跳过本次循环。
console.time("计时器的名字")
开启计时器,console.timeEnd("计时器的名字")
停止计时器。