1.JavaScript的简介

JavaScript(简称“JS”) 是一种具有函数优先的轻量级,解释型或即时编译型的高级编程语言。虽然它是作为开发Web页面的脚本语言而出名的,但是它也被用到了很多非浏览器环境中,JavaScript 基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式(如函数式编程)风格。

JavaScript的标准是ECMAScript 。截至 2012 年,所有浏览器都完整的支持ECMAScript 5.1


2.JavaScript数据类型

1.number

js不区分小数和整数,Number

123 //整数123

123.1 //浮点数123.1

1.123e3 //科学计数法

-99  //复数

NaN   //not a number

Infinity  //表示无穷大

2.字符串 

'abc'  "abc"

3. 布尔值

true false

4.逻辑运算

&&   两个都为真,结果为真

||   一个为真,结果为真

!   真即假,假即真

5.比较运算符

=

==     等于(类型不一样,值一样,也会判断为true)

===    绝对等于(类型一样,值一样,结果true)
  • 这是一个JS的缺陷,坚持不要使用==比较

须知:

  1. NaN===NaN,这个与所有的数值都不相等,包括自己
  2. 只能通过isNaN(NaN)来判断这个数据是否是NaN

 浮点数问题

console.log(1/3)===(1-(2/3))

尽量避免使用浮点数进行运算,存在精度问题

math.abs(1/3-(1-2/3))<0.0000001

6.null和underfined


• null 空
• underfined 未定义

7.数组

Java的数值必须是相同的对象,JS中不需要这样!

//保证代码的可读性,尽量使用[]
var arr=[1,2.3,4,5,'hello',null,true];
new Array(1,12,3,4,5,4,'hello');

 取数组下标;如果越界了,就会

underfined

8.对象 

对象是大括号,数组是中括号

每个属性之间使用括号隔开,最后一个不需要添加

// Person person=new Person(1,2,3,4,5);
var person={
    name:"xiaohuihui",
    age:3,
    tags:['js','java','web']
}

 取对象的值

person.name
>"xiaohuihui"
person.age
>3

3.严格检查格式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
   <!-- 前提是IDEA需要设置支持ES6语法
    'use strict'; 严格检查模式,预防JavaScript的随意性导致产生的一些问题。必须写在JavaScript的第一行
    局部变量建议使用let去定义-->
    
    <script>
        'use strict';
        //全局变量
        let i=1;
        
    </script>
    
    
</head>
<body>

</body>
</html>

4.字符串类型详解

1.正常字符串我们使用单引号,或者双引号包裹

2..注意转义字符\

  • \ '
  • \n
  • \t
  • \u4e2d  ----\u####  Unicode字符
  • \x41    Ascll字符

3.多行字符串编写

//tab上面的esc 下面的

var msg=

           hello

world 

你好!

 4.模板字符串

let name="xaiohuihui";
let age=4;

let msg=`你好!${name}`

5.字符串长度

str.length

6.字符串的可变性,不可变

console.log(student[0])
s
undefined
student[0]=1
1
console.log(student)
studnet
undefined

7.大小写转换

//注意,这里是方法,不是属性
student.toUpperCase()
studnet.toLowerCase()

8.student.indexOf()

9.substring

student.substring(1) //从第一个字符串截取到最后一个字符串
student.substring(1,3) //[1,3)

5.数组类型详解

Array可以包含任意类型的数据类型

var arr=[1,2,3,4,6]

1.长度

arr.length

注意:加入给arr.length赋值,数组大小就会发生变化,如果赋值过小,元素就会丢失

2.indexOf:通过元素获取下标索引

arr.indexOf(2)
1

注意:字符串的"1"和数字1是不同的

3.slice():截取Array的一部分,返回一个新数组,类似于String中的substring

4.push(),pop()尾部

push:压入到尾部

pop:弹出尾部的一个元素

5.unshift(),shift()头部

unshift:压入到头部

shift:弹出头部的一个元素

6.排序sort()

(3)["B","C","A"]
arr.sort()
(3)["A","B","C"]

7.元素反转reverse()

 

(3)["A","B","C"]
arr.reverse()
(3)["C","B","A"]

8.concat()

(3)["C","B","A"]
arr.concat([1,2,3])
(6)["C","B","A",1,2,3]
arr
(3)["C","B","A"]

注意:concat()并没有修改数组,只是会返回一个新的数组

9.连接符join

打印拼接数组,使用特定的字符串连接

(3)["C","B","A"]
arr.join('-')
"C-B-A"

 10.多维数组

arr=[[1,2],[3,4],["5","6"]];
arr[1][1]
4

6.对象类型详解

若干个键值对

var 对象名={
    属性名:属性值,
    属性名:属性值,
    属性名:属性值
}


//定义了一个person对象,有四个属性
var person={
    name:"xiaohuihui",
    age:3,
    email:"2391019497@qq.com",
    score:0
}

JavaScript中对象,{.......}表示一个对象,键值对描述属性xxxx:xxxxx,多个属性之间使用逗号隔开,最后一个属性不加逗号!

1.对象赋值

person.name="xiaohuihui"
"xiaohuihui"
person.name
"xiaohuihui"

 2.使用一个不存在的对象属性,不会报错!underfined

person.haha
undefined

3.动态删减属性,通过delete删除对象的属性

delete person.name
true
person

4.动态添加,直接给新的属性添加值即可

person.haha="haha"
"haha"
person

5.判断属性值是否在这个对象中,xxx in xxx

'age' in person
true
//继承
'tostring' in person
true

6.判断一个属性是否是这个对象自身拥有的 hasOwnProperty()

person.hasOwnProperty('tostring')
false
person.hasOwnProperty('age')
true