发表于: 2016-12-26 22:11:30

0 1731


今天做的事

刷基础为任务二准备以及结束终极版的css小任务

明天的计划

开始任务二

收获


今天看的是廖雪峰,然后边看边马克飞象,晚上直接粘日报,mua~


注意%是求余运算。
布尔值

布尔值和布尔代数的表示完全一致,一个布尔值只有truefalse两种值,要么是true,要么是false,可以直接用truefalse表示布尔值,也可以通过布尔运算计算出来:

true; // 这是一个truefalse; // 这是一个false2 > 1; // 这是一个true2 >= 3; // 这是一个false

&&运算是与运算,只有所有都为true&&运算结果才是true

true && true; // 这个&&语句计算结果为truetrue && false; // 这个&&语句计算结果为falsefalse && true && false; // 这个&&语句计算结果为false

||运算是或运算,只要其中有一个为true||运算结果就是true

false || false; // 这个||语句计算结果为falsetrue || false; // 这个||语句计算结果为truefalse || true || false; // 这个||语句计算结果为true

!运算是非运算,它是一个单目运算符,把true变成falsefalse变成true

true// 结果为false
false// 结果为true
! (2 > 5); // 结果为true
比较运算符
=为赋值
==会自动转换数据类对象后再做比较,
===比较,绝对相等

js对象是由属性和值组成的无序集合,对象的属性都是字符串
获取一个对象的属性,我们用 对象变量.属性名 的方式

var object={...}  



array可以包含任意数据类型,通过索引访问其中每个元素,要取得其长度,直接访问length属性:

var arr = [1,2,'hello',null,true];
arr.length;//6

直接给array.length赋值会导致其大小变化
var arr = [123];
arr.length; // 3
arr.length = 6;
arr; // arr变为[1, 2, 3, undefined, undefined, undefined]
arr.length = 2;
arr; // arr变为[1, 2]
通过索引赋值可以把对应的元素改为新的值,若赋值的索引超过本身范围,同样引起array大小变化

var arr = [123];
arr[5] = 'x';
arr; // arr变为[1, 2, 3, undefined, undefined, 'x']

name()即为函数,方法,返回值即为按照此方法计算出的值,而以下类似indexOf()即为js语言中默认存在的函数,无需function name()去声明,可直接调用

indexOf
indexOf() 会搜索指定字符串出现的位置:
var arr = [1020'30''xyz'];
arr.indexOf(10); // 元素10的索引为0
arr.indexOf(20); // 元素20的索引为1
arr.indexOf(30); // 元素30没有找到,返回-1
arr.indexOf('30'); // 元素'30'的索引为2
substring
substring() 返回指定索引区间的子串:
var arr = ' hello, world';
arr.substring(0,5);//从0开始不包括5,返回hello。

slice
slice()即对应string的substring()版本,它截取array的部分元素,然后返回一个新的array;
var arr = ['A''B''C''D''E''F''G'];
arr.slice(03); // 从索引0开始,到索引3结束,但不包括索引3: ['A', 'B', 'C']
arr.slice(3); // 从索引3开始到结束: ['D', 'E', 'F', 'G']
var a = [[1,2,3],[11,22,33],["-"],2];
console.log(a);
var b = a.slice(1,2);//认为b=[11,22,33]
alert(b);
console.log(b);//其实b = [[11,22,33]];
var d = b[0];
var e = d[0]//11
alert(e);

为什么会出现我以为b=【11,22,33】
实际上b=【【11,22,33】】呢,因为slice返回的值首先自己就是个数组,截取的内容是原数组的某个元素
所以首先b=【 我截取的元素  】,而后我截取了【11,22,33】,因为这个元素也是个数组,于是变成了【【11,22,33】】,此时若直接indexOf(11)的话是-1,因为里面没有11,只有【11,22,33】     

起止包括开始索引,并不包括结束索引,若不传递任何参数,就会从头到尾截取所有元素,可利用这一点复制一个array,
var arr = ['A''B''C''D''E''F''G'];
var aCopy = arr.slice();
aCopy; // ['A', 'B', 'C', 'D', 'E', 'F', 'G']
aCopy === arr; // false

push()在array末尾添加元素
pop()删掉array最后一个元素
var arr = [12];
arr.push('A''B'); // 返回Array新的长度: 4
arr; // [1, 2, 'A', 'B']
arr.pop(); // pop()返回'B'
arr; // [1, 2, 'A']
arr.pop(); arr.pop(); arr.pop(); // 连续pop 3次
arr; // []
arr.pop(); // 空数组继续pop不会报错,而是返回undefined
arr; // []
unshift()在array头部添加若干元素
shift()把array第一个元素删掉

var arr = [12];
arr.unshift('A''B'); // 返回Array新的长度: 4
arr; // ['A', 'B', 1, 2]
arr.shift(); // 'A'
arr; // ['B', 1, 2]
arr.shift(); arr.shift(); arr.shift(); // 连续shift 3次
arr; // []
arr.shift(); // 空数组继续shift不会报错,而是返回undefined
arr; // []
sort()
对当前array排序,会直接修改当前数组的元素位置
var arr = new Array(6)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
arr[3] = "James"
arr[4] = "Adrew"
arr[5] = "Martin"

document.write(arr + "<br />")
document.write(arr.sort())
输出
George,John,Thomas,James,Adrew,Martin
Adrew,George,James,John,Martin,Thomas

若调用时没有使用参数,则默认按字母顺序排序,精确为按字符编码的顺序排序

reverse
reversr()把整个数组元素反转

splice
splice()是修改数组万能法
可从指定索引开始删除若干元素
然后从该位置添加若干元素
var arr = ['Microsoft''Apple''Yahoo''AOL''Excite''Oracle'];
// 从索引2开始删除3个元素,然后再添加两个元素:
arr.splice(23'Google''Facebook'); // 返回删除的元素 ['Yahoo', 'AOL', 'Excite']
arr; // ['Microsoft', 'Apple', 'Google', 'Facebook', 'Oracle']// 只删除,不添加:
arr.splice(22); // ['Google', 'Facebook']
arr; // ['Microsoft', 'Apple', 'Oracle']// 只添加,不删除:
arr.splice(20'Google''Facebook'); // 返回[],因为没有删除任何元素
arr; // ['Microsoft', 'Apple', 'Google', 'Facebook', 'Oracle']
arr.splice[开始的索引,删除的数量,“添加的元素”,‘添加的元素’]

concat()把数组和数组连接起来,并返回一个新的数组
var arr = ["a","b"];
console.log(arr);
var b = ["c","d"];
console.log(b);
var c = arr.concat(b);
console.log(c)
并没有修改当前数组,而是一个新数组,它可以接受人一个元素和array,并自动拆开数组添加到心数组里
join

join()方法是一个非常实用的方法,它把当前Array的每个元素都用指定的字符串连接起来,然后返回连接后的字符串:

var arr = ['A''B''C'123];
arr.join('-'); // 'A-B-C-1-2-3'
如果Array的元素不是字符串,将自动转换为字符串后再连接。

concat

concat()方法把当前的Array和另一个Array连接起来,并返回一个新的Array

var arr = ['A', 'B', 'C'];var added = arr.concat([1, 2, 3]);
added; // ['A', 'B', 'C', 1, 2, 3]arr; // ['A', 'B', 'C']
concat()方法并没有修改当前Array,而是返回了一个新的Array

自动拆分添加。


for若省略条件无限循环可if(x>1(条件)){break;}停止
for in 遍历对象属性
var o = {
    name: 'Jack',
    age: 20,
    city: 'Beijing'};for (var key in o) {
    alert(key); // 'name', 'age', 'city'}

要过滤掉对象继承的属性,用hasOwnProperty()来实现:

var o = {
    name: 'Jack',
    age: 20,
    city: 'Beijing'};for (var key in o) {    if (o.hasOwnProperty(key)) {
        alert(key); // 'name', 'age', 'city'
    }
}

由于Array也是对象,而它的每个元素的索引被视为对象的属性,因此,for ... in循环可以直接循环出Array的索引:

请注意for ... inArray的循环得到的是String而不是Number

while

for循环在已知循环的初始和结束条件时非常有用。而上述忽略了条件的for循环容易让人看不清循环的逻辑,此时用while循环更佳。

while循环只有一个判断条件,条件满足,就不断循环,条件不满足时则退出循环。比如我们要计算100以内所有奇数之和,可以用while循环实现:

var x = 0;var n = 99;while (n > 0) {
    x = x + n;
    n = n - 2;
}
x; // 2500

在循环内部变量n不断自减,直到变为-1时,不再满足while条件,循环退出。

do ... while

最后一种循环是do { ... } while()循环,它和while循环的唯一区别在于,不是在每次循环开始的时候判断条件,而是在每次循环完成的时候判断条件:

var n = 0;
do {
    n = n + 1;
while (n < 100);
n; // 100
do { ... } while()循环要小心,循环体会至少执行1次,而forwhile循环则可能一次都不执行。
Map
Map是一组键值对的结构,具有极快的查找速度
var m = new Map([['Michael'95], ['Bob'75], ['Tracy'85]]);
m.get('Michael'); // 95

初始化Map需要一个二维数组,或者直接初始化一个空MapMap具有以下方法:

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
一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉
map支持不是字符串的key,比如数字这些,而object的key只能是字符串。

遍历Array可以采用下标循环,遍历MapSet就无法使用下标。为了统一集合类型,ES6标准引入了新的iterable类型,ArrayMapSet都属于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 ABC
    alert(x);
}
for (var x of s) { // 遍历Set ABC
    alert(x);
}
for (var x of m) { // 遍历Map
    alert(x[0] + '=' + x[1]); 
}



返回列表 返回列表
评论

    分享到