ES6 学习笔记(九)Set的基本用法
1 基本用法set类似于数组,它的成员是唯一的,当有多个相同的值,只会保留一份。 1.1 创建方法Set本身是一个构造函数,用来生成Set实例,如: 123456const s = new Set()let arr = [2, 3, 4, 5, 6, 2, 2]arr.forEach(x => s.add(x));for (let i of s) { console.log(i);} 上面代码中的add( )方法,可以添加元素到Set实例中,但不会添加重复的值。它返回的是set实例的引用。 输出结果:23456 1.2 初始化Set函数可以接受一个数组(或具有Iterable接口的其他数据结构)作为参数,来初始化Set实例,如: 1let s1= new Set([1, 2, 3]) Set创建的集合不能直接通过下标访问它的成员,要通过迭代进行访问,如使用forEach方法 1.3 set的简单应用Set最常见的应用就是去重 1.3.1 数组去重12let items = new Set([1, 2, 2, 2, 3, 4, 5, 6,...
ES6 学习笔记(八)基本类型Symbol
1、前言大家都知道,在ES5的时候JavaScript的基本类型有Number、String、Boolean、undefined、object、Null共6种,在es6中,新增了Symbol类型,用于表示独一无二的值。之后又提出了bigInt类型(前面提到过),这里简要的总结Symbol的一些基本用法。 2、基本用法2.1 用法一(直接使用)可以直接使用Symbol()创建新的symbol类型,如: 12let s = Symbol()console.log(typeof s); // symbol 注意:Symbol函数前不能使用new命令,因为生成的Symbol是一个原始类型的值,不是对象。如: 12let s = new Symbol("123")console.log(s); 结果是什么都没输出。 2.2 用法二(接收参数)Symbol函数可以接收一个字符串作为它的参数,表示对该实例的描述。如: 12let s = Symbol("foo")console.log(typeof s); // symbol 若Symbol函数的参数...
ES6学习笔记(七)正则表达式
正则表达式1、基础1.1 含义:通俗的来讲,正则表达式是一种匹配和替换的工具。如:在JS中验证手机号时,我们需要考虑用户输入的字符必须是number类型,且必须是11位的整数,且数字的前三位必须是134,155,183,188,199等等。对于这一问题,可以用if-else来实现,只不过太过于麻烦,而正则表达式就将这一问题简单化。 1.2 组成部分一个完整的正则表达式由分隔符,表达式,修饰符三部分组成。分隔符指的是除了特殊字符以外的任意字符表达式指的是由一些特殊字符以及非特殊字符串组成修饰符用于开启或关闭某些功能举个例子: 1234let str = "1a2b3c4d5e6"let reg = /[abcdef]/g// 这里表示匹配abcdef这一类的字符,匹配成功就用-进行替换console.log(str.replace(reg, '-')); // 1-2-3-4-5-6 其中,reg中的第一个/是分隔符,两个/之间的[abcef]是表达式,g是修饰符,表示全局匹配。常见的修饰符还有i表示忽略字母大小写,m表示...
ES6 学习笔记(六)基本类型String
字符串String1、字面量需要注意的地方: 由单引号或双引号括起来的字符序列。 单双引号可以嵌套,由最外围引号定界字符串 字符串字面量可以拆分成数行,每行必须以反斜线(\)结束,且反斜线都不计入字符串的内容。 在书写HTML的JS代码时,要注意与HTML代码混合搭配使用引号。 实例代码: 12345let str1 = "I have a dog"let str2 = "My 'dog' likes \eating meat"console.log(str1) // I have a dogconsole.log(str2);// My 'dog' likes eating meat 1<button onclick="alert('hello')"></button> 2、转义字符 类型 描述 \’ 单引号 \” 双引号 \n 换行 \r 回车 \ 反斜线 \xA9 十六进制数表示Latin-1编...
ES6 学习笔记(五)基本类型Boolean
Boolean1、需要注意的地方: 取值:true false 对于值为空字符串,0,-0,NaN,Null,undefined,false的布尔对象,它都会有一个初始值false。对于其它的值如”false”,[]等都会建立一个初始值是true的对象。 不能把基本类型中true或false和值为true或false的对象搞混淆了。 2、Boolean 的转化:1、使用Boolean( )转换,不要使用new Boolean()方式转换12345var a = "123"var x = Boolean(a);var y = !!(a); console.log(x); // trueconsole.log(y); // true 2、 隐式转换12345678910111213let x = 100;let y = null;let z;if (x) { console.log(x);}if (y != null) { console.log(y);}if (z) { console.log...
ES6 学习笔记(四)基本类型Number
1、数值1.1 、JavaScript数值的特点 不区分整数值和浮点数值。 所有数值均用浮点数值表示。 采用IEEE-754标准定义的64位浮点数格式表示。 整数在实际操作时(如数组索引),则是基于32为整数。 1.2、 整数直接量 除十进制外,JavaScript能识别十六进制(以0x或0X为前缀)、二进制(以0b或0B为前缀)和八进制(以0o或0O为前缀)如:0xff —–> 255,0b1001 —-> 9,0o12 —–> 10在ES6的严格模式下,禁止使用八进制 1.3、 浮点数直接量 实数写法:由整数部分、小数点和小数部分组成,如:3.1415926535 指数写法:在实数部分后跟字母e或E,再跟正负号,再跟一个整型的指 数。如:5.12e12 —>5.12×1012,1.44E-8 —> 1.44×10-8 1.4、算术运算 运算符:包括:+、-、*、/、%、**(指数操作符,ES6新增) 溢出(overflow) 当数值运算结果超过了JavaScript能表示的数值上限时发生。 结果为Infinity,若超过...
ES6 学习笔记(三)原始值与引用值
总结:1、原始值,表示单一的数据,如10,“abc”,true等。 1.1 ES的6种原始值: Undefined、Null、Boolean、Number、String、Symbol 1.2 保存原始值的变量是按值访问,操作存储在变量内存中的实际值 2、引用值,表示有多个值(原始值或其他引用值)构成的对象2.1 ES不允许直接访问对象的内存空间。2.2 实际操作对象时,访问的是保存对象的内存地址,即该对象的引用。 3、动态属性3.1 原始值是不可改变的。3.2 引用值(对象)可以随时添加、修改和删除它的属性和方法。如: 123456let person = new Object();person.name = "小明";person.sayhello= function () { console.log("Hello, I'm " + this.name);};console.log(person) 运行结果:{ name: ‘小明’, sayhello: [Function (anonymous)] ...
ES6 学习笔记(二)解构赋值
一、数组的解构赋值1、基本用法ES6允许按照一定模式从数组和对象中提取值,然后对变量进行赋值,该操作即为解构如: 12345let [a,b,c]=[1,2,3];console.log(a,b,c) // a=1 b=2 c=3let [foo,[[bar], baz]]=[1,[[2],3]];console.log(foo,bar,baz) // foo=1 bar=2 baz=3 这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值注意:1、没有变量接收的解构值会被忽略掉。 12let [a, [b], d] = [1, [2, 3], 4];console.log(a,b,d) // a=1 b=2 d=3 2、如果赋值不是数组则会报错。 12let [foo] = 1;console.log(foo) // TypeError: 1 is not iterable 3、含有扩展运算符的解构 123let a,b,c[a,b,...c] = [1,2,3,4,5,6]console.log(a,b,c); // a=1 b=2 c=[ 3,...
ES6 学习笔记(一)let、const与作用域
一、let命令1.1用法1.1.1 let类似于var,但所声明的变量只在let命令所在的代码块有效。如: 123456{ let a = 10 var b = 20}console.log(b)console.log(a) 输出结果:20D:\code\Workspace\JS_projects\test\02\01.js:10console.log(a) ^ReferenceError: a is not defined 1.1.2 for循环中的变量计数器很适合使用let命令1234for (var i = 0; i < 3; i++) { console.log(1, i)}console.log(2, i) 输出结果:1 01 11 22 3 12345for (let j = 0; j < 3; j++) { console.log(1, j)}console.log(2, j) 输出结果:1 01 11 2D:\code\Workspace\JS_p...
JS 学习笔记(二)Ajax的简单使用
使用Ajax访问本地TXT文件ajax.js 12345678910111213// 创建请求对象var ajax = new XMLHttpRequest();// 建立连接ajax.open('get', 'test.txt');// 发送请求ajax.send()// 监听结果ajax.onreadystatechange = function () { // readyState 状态值 status 状态码 if (ajax.readyState == 4 && ajax.status == 200) { console.log("获取的数据是:" + ajax.responseText); }} test.txt 11234567890 运行结果:获取的数据是:1234567890
