JavaScript是一种专门为与网页交互而设计的脚本语言**,它由三个部分组成:
1.ECMAScript 提供核心语言功能。
2.文档对象模型(DOM)提供了访问和操作网页内容/元素的方法和接口。
3.浏览器对象模型(BOM)提供了与浏览器交互的方法和接口。例如:navigator,location,screen
在HTML中使用JavaScript通常有两种方式:1.直接写在HTML的head标签之中。2.通过外部引入的方式。
在HTML解析过程中如果遇到JS代码,那么它就会去下载并执行JS代码,HTML页面的解析渲染过程会暂时挂起。
async,defer属性的作用是JS脚本在执行过程中不会影响页面的解析渲染
defer延迟脚本,只适用于外部脚本。添加了defer属性的JS脚本会等到HTML加载完毕的时候在去执行脚本文件。
async异步脚本,告诉浏览器立即执行脚本文件,但同时也不会阻止HTML文件的加载。
基本数据类型:Number,String,Null,undefined,boolean
typeof 操作符可以用来检测变量的数据类型,通常是基本数据类型。例如判断一个变量是否存在就可以利用typeof 来进行,这相对来说是一种比较靠谱的方法。
var a = 'ff'
typeof a !== undefined
undefined的类型只有一个,即undefined。当声明一个变量没有对其初始化/赋值的时候,这个变量的值就是一个undefined。
var message; //undefined
typtypeof meaaage; //undefined
如果用 typeof 来检测 Null的数据类型,会发现它返回的是 Object。这是因为Null指向的其实是一个空对象。如果一个变量将来要保存一个对象,那么在这个变量初始化的时候就可以赋值为null,通常可以用来初始化一个对象。
typtypeeof null // Object
布尔值只存在两种类型,即true和false。它也是我们使用最广泛的一种数据类型。可以用它来控制条件语句的执行。虽然布尔值只有两个值,但是它可以调用Boolean()方法对其他类型的数据进行转换。
布尔类型转换:调用Boolean()方法可以实现将任意数据类型转换为布尔类型,注意!除空字符串"",null,undefined,0,NaN,-0,false会转为false,其余的均会转为true
Number类型用来表示一个数值,可以是一个整数也可以是一个浮点数。
浮点数:浮点数指的是小数点后面至少有一位的数字。如0.1,10.12,99.99999
浮点数的运算通常有精度问题,例如 0.1+0.2!=0.3 而是等于0.30000000000000004
浮点数运算小数的最高精度为17位小数。
NaN: 非数值,是一个特殊的数值。指的是一个预期返回数值然而并没有返回数值的情况。例如:‘blue’-‘ff’ 就返回一个NaN
'blue' - 'ff' // NaN
nnnNaN == NaN // false
isNaN() 方法用来判断一个值是否不是数值,这个参数可以是任意类型。
isNNaN('aa') // true
isNNaN(111) // false
如果是两个字符串相加,就会使两个字符串拼接:
var a = 'hello'
var b = 'word';
a + b = 'hello word'
如果两个变量中有一个是number 一个是字符串类型,那么就会将另一个数字为字符串类型,实现字符串拼接。
var a = '1';
var b = 2;
a + b = '12'
顾名思义,可以实现对一个数字类型变量的自增自减,如果要实现对一个字符串的自增自减呢,实际上他会输出NaN。
对一个变量实现前置自增/自减或者后置自增/自减其效果是不一样的。
var n = 1;
n++;
++n
前置自增:它会对这个变量先进行+1之后再返回来
后置自增:它会先返回这个变量,在进行+1的操作
+= 的意思是:
var a = 10;
a += a + 10;
&&(与) : 并且的关系,须满足全部条件才可以
||(或):只要满足其中一个条件即可,后面的条件就不会往下执行了
!(不等于):不满足某个条件
如果是 == 的话会存在一个数据类型转换的过程,例如:‘11’ == 11 它会默认将其中一个值转换为与另一个一样的数据类型,所以一般实际工作中还是使用 ===全等比较好。
通常用来做一些简单的逻辑运算:
a === 10 ? 100 : 200
switch(),if-else()
switch(type){
case 1:
...
break;
case 2:
...
break;
default:
...
}
以上代码给switch传了一个type值进去,然后分别有case 1,case 2的两个条件,当满足其中一个条件后就会执行其中的代码,并在执行完后退出循环,如果都不满足就会执行default中的代码
if( a=== 1){
...
}else if(a === 2){
...
}else{
...
}
以上代码是一个if条件语句,当满足其中某个条件时就会,执行其中的代码,如果没有满足的条件就会执行 else中的代码
for,for…in, while,do-while
平时用的最多的莫过于for循环了,它包括一个初始变量,循环条件,变量自增。通常用来遍历一个数组
for(var i = 1; i<10; i++){
...
}
fo…in 通常用来遍历数组或者一个对象
var arr = [1,2,3,4,5]
for(var i in arr){
arr[i]
}
while 最为简单的一种循环,小括号内的为条件,大括号内的为要执行的代码块
while(i<10){
i++
}
do…while 可以说是while 循环的一种改进型,通常代码块在前,无论如何代码块中的代码都会先执行一次,然后再去执行条件部分
do{
a++
}while(a<10)