首页 > 编程 > JavaScript > 正文

JavaScript 基础

2019-11-06 08:07:00
字体:
来源:转载
供稿:网友

数据类型

Number

javaScript不区分整型与浮点,统一用Number表示。//关键字NaN //not a numberInfinity //无穷大== & === == 先将数据类型转换成一致的,再比较。结果诡异,一般不用。 === 直接进行比较,数据类型不同返回false。

数组

//Javascript的数组可以放任意类型的数据。var arr =[1,3.14,'hello',null,true];a[0];...

对象

JavaScript的对象是一组由键-值组成的无序集合,例如:

var person = { name: 'Bob', age: 20, tags: ['js', 'web', 'mobile'], city: 'Beijing', hasCar: true, zipcode: null};

数组

slicevar arr =[0,1,2,3];arr.[5] ='X'; //就会变成 var arr =[0,1,2,3,undefind,X];arr.slice(1,3) //从a[1]~a[3] [1,2,3]arr.slice(3) //从3所引到结束push() pop()//push()向Array的末尾添加若干元素,pop()则把Array的最后一个元素删除掉:var arr = [1, 2];arr.push('A', 'B'); // 返回Array新的长度: 4arr; // [1, 2, 'A', 'B']arr.pop(); // pop()返回'B'arr; // [1, 2, 'A']arr.pop(); arr.pop(); arr.pop(); // 连续pop 3次arr; // []arr.pop(); // 空数组继续pop不会报错,而是返回undefinedarr; // []unshift() shift()//如果要往Array的头部添加若干元素,使用unshift()方法,shift()方法则把Array的第一个元素删掉:var arr = [1, 2];arr.unshift('A', 'B'); // 返回Array新的长度: 4arr; // ['A', 'B', 1, 2]arr.shift(); // 'A'arr; // ['B', 1, 2]arr.shift(); arr.shift(); arr.shift(); // 连续shift 3次arr; // []arr.shift(); // 空数组继续shift不会报错,而是返回undefinedarr; // []sort//sort()可以对当前Array进行排序,它会直接修改当前Array的元素位置,直接调用时,按照默认顺序排序:var arr = ['B', 'C', 'A'];arr.sort();arr; // ['A', 'B', 'C']reverse//reverse()把整个Array的元素给掉个个,也就是反转:var arr = ['one', 'two', 'three'];arr.reverse(); arr; // ['three', 'two', 'one']splice//splice()方法是修改Array的“万能方法”,它可以从指定的索引开始删除若干元素,然后再从该位置添加若干元素:var arr = ['Microsoft', 'Apple', 'Yahoo', 'AOL', 'Excite', 'Oracle'];// 从索引2开始删除3个元素,然后再添加两个元素:arr.splice(2, 3, 'Google', 'Facebook'); // 返回删除的元素 ['Yahoo', 'AOL', 'Excite']arr; // ['Microsoft', 'Apple', 'Google', 'Facebook', 'Oracle']// 只删除,不添加:arr.splice(2, 2); // ['Google', 'Facebook']arr; // ['Microsoft', 'Apple', 'Oracle']// 只添加,不删除:arr.splice(2, 0, 'Google', 'Facebook'); // 返回[],因为没有删除任何元素arr; // ['Microsoft', 'Apple', 'Google', 'Facebook', 'Oracle']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']join//join()方法是一个非常实用的方法,它把当前Array的每个元素都用指定的字符串连接起来,然后返回连接后的字符串:var arr = ['A', 'B', 'C', 1, 2, 3];arr.join('-'); // 'A-B-C-1-2-3'

MAP&SET

mapvar m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]);m.get('Michael'); // 95//初始化Map需要一个二维数组,或者直接初始化一个空Map。Map具有以下方法:var m = new Map(); // 空Mapm.set('Adam', 67); // 添加新的key-valuem.set('Bob', 59);m.has('Adam'); // 是否存在key 'Adam': truem.get('Adam'); // 67m.delete('Adam'); // 删除key 'Adam'm.get('Adam'); // undefinedSet//Set和Map类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在Set中,没有重复的key。//要创建一个Set,需要提供一个Array作为输入,或者直接创建一个空Set:var s1 = new Set(); // 空Setvar s2 = new Set([1, 2, 3]); // 含1, 2, 3//重复元素在Set中自动被过滤:var s = new Set([1, 2, 3, 3, '3']);s; // Set {1, 2, 3, "3"}

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 alert(x);}for (var x of s) { // 遍历Set alert(x);}for (var x of m) { // 遍历Map alert(x[0] + '=' + x[1]);}for…in&for…of区别//for...in 遍历对象名称var a = ['A', 'B', 'C'];a.name = 'Hello';for (var x in a) { alert(x); // '0', '1', '2', 'name'}//for...of 遍历数组内容var a = ['A', 'B', 'C'];a.name = 'Hello';for (var x of a) { alert(x); // 'A', 'B', 'C'}

与java不同地方记录

局部作用域由于JavaScript的变量作用域实际上是函数内部,我们在for循环等语句块中是无法定义具有局部作用域的变量的:'use strict';function foo() { for (var i=0; i<100; i++) { // } i += 100; // 仍然可以引用变量i}为了解决块级作用域,ES6引入了新的关键字let,用let替代var可以申明一个块级作用域的变量:'use strict';function foo() { var sum = 0; for (let i=0; i<100; i++) { sum += i; } i += 1; // SyntaxError}map()方法function pow(x) { return x * x;}var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];arr.map(pow); // [1, 4, 9, 16, 25, 36, 49, 64, 81]var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];arr.map(String); // ['1', '2', '3', '4', '5', '6', '7', '8', '9']
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表