JS入门
利用寒假一个多月的时间,重新学习下JS。参考文献:廖雪峰的官方网站
一步一步地学习并记下笔记复习。
使用var申明的变量则不是全局变量,它的范围被限制在该变量被申明的函数体内(函数的概念将稍后讲解),同名变量在不同的函数体内互不冲突。
不用var申明的变量会被视为全局变量,为了避免这一缺陷,所有的JavaScript代码都应该使用strict模式。
转义字符
\n 表示换行
JavaScript把null、undefined、0、NaN和空字符串’'视为false,其他值一概视为true。
基本类型
JS的基本类型:
Number
String
boolean
undefined
null
Object
字符串:
字符串是不可变的,如果对字符串的某个索引赋值,不会有任何错误,但是,也没有任何效果。
调用这些方法本身不会改变原有字符串的内容,而是返回一个新字符串:
toUpperCase()
toLowerCase()
indexOf() 搜索指定字符串出现的位置
substring() 返回指定区间的子串
数组
indexOf() 搜索指定元素的位置
slice() 截取Array的部分元素,然后返回一个新的Array
push() 向末尾添加若干元素
pop() 把末尾的最后一个元素删除
unshift() 向头部添加若干元素
shift() 把头部第一个元素删除掉
sort() 对当前Array进行排序,它会直接修改当前Array的位置。
reverse() 把整个Array的元素给反转
splice() 修改Array的万能方法,可以从指定的索引开始删除若干元素,然后从该位置添加若干元素
concat() 把当前的Array和另一个Array连接起来,并返回一个新的Array
join() 把当前Array的每个元素都用指定的字符串连接起来,然后返回连接后的字符串
对象
由若干键值对组成。
如果属性名包含特殊字符,需要用’'括起来。访问这个属性也无法实用.操作符,必须用[‘xxx’]来访问。
条件判断
if(){
}else{
}
if(){
}else if(){
}else{
}
循环
for循环
for(初始条件;结束条件;递增条件){
}
for循环最常用的地方是利用索引来遍历数组:
var i,x
for(i=0;i<arr.length;i++){
x = arr[i];
}
可以用break语句他退出循环。
for…in
它可以把一个对象的所有属性依次循环出来:
var o = {
name: 'Jack',
age: 20,
city: 'Beijing'
};
for (var key in o) {
console.log(key); // 'name', 'age', 'city'
}
由于Array也是对象,而它的每个元素的索引被视为对象的属性,因此,for…in循环可以列出Array的索引:
var a = ['A', 'B', 'C'];
for (var i in a) {
console.log(i); // '0', '1', '2'
console.log(a[i]); // 'A', 'B', 'C'
}
注意:for…in对Array循环得到的是String而不是Number
while
while(){
}
while循环只有一个判断条件,条件满足就不断循环。
do {
}while()
是在每次循环完成时判断条件。
Map和Set
Map
Map是一组键值对的结构,具有极快的查找速度
var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]);
m.get('Michael'); // 95
初始化Map需要一个二维数组,或者直接初始化一个空的Map。
var m = new Map(); // 空Map
m.set('Adam', 67); // 添加新的key-value
m.set('Bob', 59);
m.has('Adam'); // 是否存在key 'Adam': true
m.get('Adam'); // 67
m.delete('Adam'); // 删除key 'Adam'
m.get('Adam'); // undefined
Set
Set和Map类似,是一组key的集合,但不存储value。
由于key不能重复,所以在Set中,没有重复的key。
var s = new Set([]) //创建一个Set,需要提供一个Array
s.add() //添加元素
s.delete() //删除元素
iterable
遍历Array可以采用下标循环,遍历Map和Set就无法使用下标。为了统一集合类型,ES6引入了新的iterable类型,Array、Map、Set都属于iterable类型
具有iterable类型的集合可以通过新的for…of来遍历。
var a = ['A', 'B', 'C'];
var s = new Set(['A', 'B', 'C']);
var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);
for (var x of a) { // 遍历Array
console.log(x);
}
for (var x of s) { // 遍历Set
console.log(x);
}
for (var x of m) { // 遍历Map
console.log(x[0] + '=' + x[1]);
}
更好的方法是直接使用iterable内置的**foreach()**方法,它接受一个函数,每次迭代就自动回调该函数。
Array为例:
var a = ['A', 'B', 'C'];
a.forEach(function (element, index, array) {
// element: 指向当前元素的值
// index: 指向当前索引
// array: 指向Array对象本身
console.log(element + ', index = ' + index );
});
Set没有索引,回调函数前两个都是元素本身。
Map的回调函数的参数以此为value、key、map本身
推荐阅读
-
如何在短时间内快速入门 Social Network Analysis?
-
Access入门教程 2.3 工具栏的使用
-
Laravel 5 框架入门(三),laravel框架入门
-
从零开始深度学习0611——pytorch入门之Pytorch 与 numpy 区别+variable+activation+regression+classification+快速搭建
-
Java Web基础入门第五讲 XML语言——DOM4J实现对XML文档的CRUD操作
-
javascript计时器频率设置(js中计时器的用法)
-
springmvc+前后端分离+IOC+工厂模式入门介绍
-
js cookies 常见网页木马挂马代码 24小时只加载一次_广告代码
-
js 自定义的联动下拉框_javascript技巧
-
Gradle入门教程(零):Gradle的下载与安装