【Mark】JavaScript
其他
2020-03-06 10:54:01
阅读次数: 0
JavaScript简介
- JavaScript是世界上最流行的脚本语言
- 在Web世界里,目前只有JavaScript能跨平台、跨浏览器驱动网页,与用户交互。
- 由于网景公司希望能在静态HTML页面上添加一些动态效果,于是叫
Brendan Eich
这哥们在两周之内设计出了JavaScript语言。你没看错,这哥们只用了10天时间。
- 事实上JavaScript除了语法上有点像Java,其他部分基本上没啥关系。
ECMAScript
是一种语言标准,而JavaScript
是网景公司对ECMAScript标准的一种实现,是网景的注册商标。
- 如果你遇到ECMAScript这个词,简单把它替换为JavaScript就行了。
快速入门
- JavaScript的数据类型
- Number(不区分整型和浮点数)
- 字符串(
""
或''
)
- 布尔值(
!
是将true
变成false
的运算符)
- 比较运算符,第一种是
==
比较,它会自动转换数据类型再比较;
第二种是===
比较,它不会自动转换数据类型,数据类型不一致,返回false,一致,再比较。
不要使用==
比较,始终坚持使用===
比较。
NaN
这个特殊的Number
与所有其他值都不相等,包括它自己
唯一能判断NaN的方法是通过isNaN()
函数
浮点数在运算过程中会产生误差,因为计算机无法精确表示无限循环小数。要比较两个浮点数是否相等,只能计算它们之差的绝对值,看是否小于某个阈值,这不是JavaScript的设计缺陷
null
和undefined
,JavaScript的设计者希望用null表示一个空的值,而undefined表示值未定义。事实证明,这并没有什么卵用,区分两者的意义不大。大多数情况下,我们都应该用null。undefined仅仅在判断函数参数是否传递的情况下有用
- 数组,①直接用
[]
创建数组 ②用Array()
函数
出于代码的可读性考虑,强烈建议直接使用[]
。
- 对象,是一组由键-值组成的无序集合,键都是字符串类型,值可以是任意数据类型
- 变量,在JavaScript中就是用一个变量名表示,变量名是大小写英文、数字、$和_的组合,且不能用数字开头,可以用中文,但是,请不要给自己找麻烦。
- 缩进,通常是4个空格
- 安装VSCode
var
这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如Java语言
- 如果一个变量没有通过
var
申明就被使用,那么该变量就自动被申明为全局变量
strict
模式,强制通过var
申明变量,否则报错,在JavaScript代码的第一行写上'use strict';
启用该模式
- 字符串
- 多行字符串,用反引号`…`表示(ES6新增)
- 模板字符串,用
${name}
表示,可以自动替换字符串中的变量(ES6新增,注意,name所表示的是一个变量名)
- 操作字符串
- 获取位置用索引,类似数组,例如
s[13]; // undefined 超出范围的索引不会报错,但一律返回undefined
- 特别注意,字符串不可变
- 如果对字符串的某个索引赋值,不会有任何错误,但是,也没有任何效果
toUpperCase
、toLowerCase
、indexOf
(指定字符串位置)、substring
(返回指定索引区间的子串,注意[ , )
)、
- 数组
- 大多数其他编程语言不允许直接改变数组的大小,越界访问索引会报错。然而,
JavaScript
的Array
却不会有任何错误,它会修改Array
的大小
- 常用方法
- ①
indexOf()
对应 String的indexOf()
定位
- ②
slice()
对应 String的substring()
,如果不给slice()传递任何参数,它就会从头到尾截取所有元素。
- ③
push()
和pop()
在数组末尾操作,添加或删除若干元素
- ④
unshift()
和shift()
,同上,在数组头部操作
- ⑤
sort()
排序 ⑥reverse()
反转
- ⑦
splice()
方法是修改Array的 “万能方法”,它可以从指定的索引开始删除若干元素,然后再从该位置添加若干元素,方法返回被删除的元素
- ⑧
concat()
连接
- ⑨
join()
每个元素都用指定的字符串连接起来,然后返回连接后形成的字符串
- 多维数组:
var arr = [[1, 2, 3], [400, 500, 600], '-'];
- 对象
- 键必须是字符串(键又名,
Key
、属性名)
- 如果属性名包含特殊字符(无效的变量),就必须用
''
括起来,用['xxx']
来访问
- 当
key
是一个合法的变量名时,Object['key']
与Object.key
作用一样
- 由于JavaScript的对象是动态类型,你可以自由地给一个对象添加或删除属性
- 判断一个属性存在:
key in object
- 判断一个属性是否是自身拥有的:
object.hasOwnProperty(key)
- 条件循环和判断
- JavaScript 把
null
、undefined
、0
、NaN
和空字符串''
视为false
,其他值一概视为true
for
循环的3个条件都是可以省略的,如果没有退出循环的判断条件,就必须使用break
语句退出循环,否则就是死循环
- Array 数组也是一个对象,而它的每个元素的索引被视为对象的属性
- Map、Set 和 iterable
- 初始化Map需要一个二维数组,或者直接初始化一个空Map(用
.set()
添加key-value
)
- Set和Map类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在Set中,没有重复的元素(用
.add()
添加key
)
- 用
delete
删除元素
for ... in
循环由于历史遗留问题,它遍历的实际上是对象的属性名称
for ... of
循环则完全修复了这些问题,它只循环集合本身的元素
iterable
内置的forEach
方法,它接收一个函数,每次迭代就自动回调该函数
Set
与Array
类似,但Set
没有索引,因此回调函数的前两个参数(value
、key
)都是元素本身
JavaScript
的函数调用不要求参数必须一致
函数
- 函数就是最基本的一种代码抽象的方式
- 如果没有
return
,函数执行完毕后也会返回结果,只是结果为undefined
- 在JavaScript中函数是一个对象,函数名可以视为指向该函数的一个变量
- 匿名函数,没有函数名,定义时
var abs = function (x) {...};
- 因为函数调用时对参数没有要求,所以多传参少传参都不会报错
发布了77 篇原创文章 ·
获赞 160 ·
访问量 1万+
转载自blog.csdn.net/qq_43763494/article/details/103943356