ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会,英文名称是European Computer Manufacturers Association)通过ECMA-262标准化的脚本程序设计语言。这种语言在万维网上应用广泛,它往往被称为JavaScriptJScript,但实际上后两者是ECMA-262标准的实现和扩展。ECMAScript 6.0(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了。它的目标,是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言。

  嫌babel麻烦,直接使用Traceur转码器-Google公司的Traceur转码器,可以将ES6代码转为ES5代码。这意味着,你可以用ES6的方式编写程序,又不用担心浏览器是否支持。Traceur允许将ES6代码直接插入网页。首先,必须在网页头部加载Traceur库文件。

  <!-- 加载Traceur编译器 -->
<script src="http://google.github.io/traceur-compiler/bin/traceur.js" type="text/javascript"></script>
<script src="https://google.github.io/traceur-compiler/bin/BrowserSystem.js"></script>
<!-- 将Traceur编译器用于网页 -->
<script src="http://google.github.io/traceur-compiler/src/bootstrap.js" type="text/javascript"></script>
<script type="module">
class Calc {
constructor(){
console.log('Calc constructor');
}
add(a, b){
return a + b;
}
}
var c = new Calc();
console.log(c.add(4,5));//9
</script>

  这样就可以欣赏es6咯!我在写这篇博文的时候把chrome升级到了最新版,大部分es6都支持了。如若报错,还是老实按上面的方法加编译器吧。

一、let

  let是ES6中新增关键字。它的作用类似于var,用来声明变量。const声明一个只读的常量。一旦声明,常量的值就不能改变。
  ES5只有全局作用域和函数作用域,没有块级作用域,这带来很多不合理的场景。
  而let则实际上为JavaScript新增了块级作用域。用它所声明的变量,只在let命令所在的代码块内有效。
    if(1){
var a=1;
let b=2;
console.log(a);
console.log(b);
}
console.log(a);
// console.log(b);//报错 b is not defined(…) if(1){//只在此作用域有效
const c=3;
console.log(c);
}
// console.log(c);//报错 b is not defined(…)
  一个var带来的不合理场景就是用来计数的循环变量泄露为全局变量,看下面的例子:
var a = [];
for (var i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};
}
a[6](); //
//上面代码中,变量i是var声明的,在全局范围内都有效。所以每一次循环,新的i值都会覆盖旧值,导致最后输出的是最后一轮的i的值。而使用let则不会出现这个问题。
var aa = [];
for (let ii = 0; ii < 10; ii++) {
aa[ii] = function () {
console.log(ii);
};
}
aa[6](); //

二、repeat()

  str.repeat()返回一个新字符串,表示将原字符串重复n次。

    if(1){
let str='nick';
let str1=str.repeat(2);
console.log(str);
console.log(str1);
}

三、拼接字符串

  模板字符中,支持字符串插值,模板字符串可以包含空格多行。
  用`来标识起始,用${}来引用变量,而且所有的空格和缩进都会被保留在输出之中,``这2个点不是引号,是esc下面那个~、(英文状态)。
    if(1){
let first='web';
let last='nick';
console.log(`Hello ${first} ${last}!`);
console.log(`Hello ${first} ${last}!`);
console.log(`Hello ${first}
${last}!`);
}

  以上常用,下面的作为了解

四、String.raw()

若使用String.raw 作为模板字符串的前缀,则模板字符串可以是原始(raw)的。反斜线也不再是特殊字符,\n 也不会被解释成换行符:
    if(1){
let raw=String.raw`hi : \n`;
console.log(raw==='hi : \\n');
}

五、Number.isFinite()、Number.isNaN()、Number.isInteger()

  Number.isFinite()用来检查一个数值是否非无穷(infinity)。Number.isNaN()用来检查一个值是否为NaN。
    Number.isFinite(15); // true
Number.isFinite(0.8); // true
Number.isFinite(NaN); // false
Number.isFinite(Infinity); // false
Number.isFinite(-Infinity); // false
Number.isFinite("foo"); // false
Number.isFinite("15"); // false
Number.isFinite(true); // false
Number.isNaN(NaN); // true
Number.isNaN(15); // false
Number.isNaN("15"); // false
Number.isNaN(true); // false
Number.isInteger()用来判断一个值是否为整数。需要注意的是,在JavaScript内部,整数和浮点数是同样的储存方法,所以3和3.0被视为同一个值。
Number.isInteger(25) // true
Number.isInteger(25.0) // true
Number.isInteger(25.1) // false
Number.isInteger("15") // false
Number.isInteger(true) // false

六、Math

  Math对象新增的方法,都是静态方法,只能在Math对象上调用。
  Math.trunc():去除一个数的小数部分,返回整数部分。
Math.trunc(4.1) //
Math.trunc(-4.1) // -4
注意:对于空值和无法截取整数的值,返回NaN。
Math.sign():判断一个数到底是正数、负数、还是零。
返回五种值:参数为正数,返回+1;参数为负数,返回-1;参数为0,返回0;参数为-0,返回-0;其他值,返回NaN。
Math.sign(-5) // -1
Math.sign(5) // +1
Math.sign(0) // +0
Math.sign(-0) // -0
Math.sign('hubwiz'); // NaN
//Math.cbrt:计算一个数的立方根。
Math.cbrt(-1); // -1
Math.cbrt(0); //
Math.cbrt(2); // 1.2599210498948732
//Math.fround:返回一个数的单精度浮点数形式。
Math.fround(0); //
Math.fround(1.337); // 1.3370000123977661
Math.fround(NaN); // NaN
//Math.hypot:返回所有参数的平方和的平方根。
Math.hypot(3, 4); //
Math.hypot(3, 4, 5); // 7.0710678118654755
Math.hypot(); //
Math.hypot(NaN); // NaN
Math.hypot(3, 4, 'foo'); // NaN
Math.hypot(3, 4, '5'); // 7.0710678118654755
Math.hypot(-3); //
//如果参数不是数值,Math.hypot方法会将其转为数值。只要有一个参数无法转为数值,就会返回NaN。
/*8.Math 对数方法
Math.expm1(x):返回ex - 1。*/
Math.expm1(-1); // -0.6321205588285577
Math.expm1(0); //
Math.expm1(1); // 1.718281828459045
//Math.log1p(x):返回1 + x的自然对数。如果x小于-1,返回NaN。
Math.log1p(1); // 0.6931471805599453
Math.log1p(0); //
Math.log1p(-1); // -Infinity
Math.log1p(-2); // NaN
//Math.log10(x):返回以10为底的x的对数。如果x小于0,则返回NaN。
Math.log10(2); // 0.3010299956639812
Math.log10(1); //
Math.log10(0); // -Infinity
Math.log10(-2); // NaN
Math.log10(100000); //
//Math.log2(x):返回以2为底的x的对数。如果x小于0,则返回NaN。
Math.log2(3); // 1.584962500721156
Math.log2(2); //
Math.log2(1); //
Math.log2(0); // -Infinity
Math.log2(-2); // NaN
Math.log2(1024); //
//三角函数方法
Math.sinh(3) //返回x的双曲正弦(hyperbolic sine)
Math.cosh(3) //返回x的双曲余弦(hyperbolic cosine)
Math.tanh(3)// 返回x的双曲正切(hyperbolic tangent)
Math.asinh(3) //返回x的反双曲正弦(inverse hyperbolic sine)
Math.acosh(3) //返回x的反双曲余弦(inverse hyperbolic cosine)
Math.atanh(3) //返回x的反双曲正切(inverse hyperbolic tangent)

此篇笔记整合:

<!DOCTYPE html>
<html >
<head>
<meta charset="UTF-8">
<title>es6-string-number</title>
<script>
//1.let是ES6中新增关键字。它的作用类似于var,用来声明变量。const声明一个只读的常量。一旦声明,常量的值就不能改变。
//ES5只有全局作用域和函数作用域,没有块级作用域,这带来很多不合理的场景。
//而let则实际上为JavaScript新增了块级作用域。用它所声明的变量,只在let命令所在的代码块内有效。
if(1){
var a=1;
let b=2;
console.log(a);
console.log(b);
}
console.log(a);
// console.log(b);//报错 b is not defined(…) if(1){//只在此作用域有效
const c=3;
console.log(c);
}
// console.log(c);//报错 b is not defined(…) //一个var带来的不合理场景就是用来计数的循环变量泄露为全局变量,看下面的例子:
var a = [];
for (var i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};
}
a[6](); // 10 //上面代码中,变量i是var声明的,在全局范围内都有效。所以每一次循环,新的i值都会覆盖旧值,导致最后输出的是最后一轮的i的值。而使用let则不会出现这个问题。 var aa = [];
for (let ii = 0; ii < 10; ii++) {
aa[ii] = function () {
console.log(ii);
};
}
aa[6](); // 6 //2.repeat()返回一个新字符串,表示将原字符串重复n次。
if(1){
let str='nick';
let str1=str.repeat(2);
console.log(str);
console.log(str1);
}
// 3.模板字符中,支持字符串插值,模板字符串可以包含空格多行
//用`来标识起始,用${}来引用变量,而且所有的空格和缩进都会被保留在输出之中,``这2个点不是引号,是esc下面那个~、(英文状态)
if(1){
let first='web';
let last='nick';
console.log(`Hello ${first} ${last}!`);
console.log(`Hello ${first} ${last}!`);
console.log(`Hello ${first}
${last}!`);
}
/*4.String.raw()
模板字符串可以是原始的
ES6还为原生的String对象,提供了一个raw方法。
若使用String.raw 作为模板字符串的前缀,则模板字符串可以是原始(raw)的。反斜线也不再是特殊字符,\n 也不会被解释成换行符:*/
if(1){
let raw=String.raw`hi : \n`;
console.log(raw==='hi : \\n');
} // 5.Number.isFinite()用来检查一个数值是否非无穷(infinity)。Number.isNaN()用来检查一个值是否为NaN。
Number.isFinite(15); // true
Number.isFinite(0.8); // true
Number.isFinite(NaN); // false
Number.isFinite(Infinity); // false
Number.isFinite(-Infinity); // false
Number.isFinite("foo"); // false
Number.isFinite("15"); // false
Number.isFinite(true); // false
Number.isNaN(NaN); // true
Number.isNaN(15); // false
Number.isNaN("15"); // false
Number.isNaN(true); // false
// 6.  Number.isInteger()用来判断一个值是否为整数。需要注意的是,在JavaScript内部,整数和浮点数是同样的储存方法,所以3和3.0被视为同一个值。
Number.isInteger(25) // true
Number.isInteger(25.0) // true
Number.isInteger(25.1) // false
Number.isInteger("15") // false
Number.isInteger(true) // false
//7.Math对象
/*Math对象新增的方法,都是静态方法,只能在Math对象上调用。
Math.trunc():去除一个数的小数部分,返回整数部分。*/
Math.trunc(4.1) // 4
Math.trunc(-4.1) // -4
/*注意:对于空值和无法截取整数的值,返回NaN。
Math.sign():判断一个数到底是正数、负数、还是零。
返回五种值:参数为正数,返回+1;参数为负数,返回-1;参数为0,返回0;参数为-0,返回-0;其他值,返回NaN。*/
Math.sign(-5) // -1
Math.sign(5) // +1
Math.sign(0) // +0
Math.sign(-0) // -0
Math.sign('hubwiz'); // NaN
//Math.cbrt:计算一个数的立方根。
Math.cbrt(-1); // -1
Math.cbrt(0); // 0
Math.cbrt(2); // 1.2599210498948732
//Math.fround:返回一个数的单精度浮点数形式。
Math.fround(0); // 0
Math.fround(1.337); // 1.3370000123977661
Math.fround(NaN); // NaN
//Math.hypot:返回所有参数的平方和的平方根。
Math.hypot(3, 4); // 5
Math.hypot(3, 4, 5); // 7.0710678118654755
Math.hypot(); // 0
Math.hypot(NaN); // NaN
Math.hypot(3, 4, 'foo'); // NaN
Math.hypot(3, 4, '5'); // 7.0710678118654755
Math.hypot(-3); // 3
//如果参数不是数值,Math.hypot方法会将其转为数值。只要有一个参数无法转为数值,就会返回NaN。
/*8.Math 对数方法
Math.expm1(x):返回ex - 1。*/ Math.expm1(-1); // -0.6321205588285577
Math.expm1(0); // 0
Math.expm1(1); // 1.718281828459045
//Math.log1p(x):返回1 + x的自然对数。如果x小于-1,返回NaN。 Math.log1p(1); // 0.6931471805599453
Math.log1p(0); // 0
Math.log1p(-1); // -Infinity
Math.log1p(-2); // NaN
//Math.log10(x):返回以10为底的x的对数。如果x小于0,则返回NaN。 Math.log10(2); // 0.3010299956639812
Math.log10(1); // 0
Math.log10(0); // -Infinity
Math.log10(-2); // NaN
Math.log10(100000); // 5
//Math.log2(x):返回以2为底的x的对数。如果x小于0,则返回NaN。 Math.log2(3); // 1.584962500721156
Math.log2(2); // 1
Math.log2(1); // 0
Math.log2(0); // -Infinity
Math.log2(-2); // NaN
Math.log2(1024); // 10
//三角函数方法
Math.sinh(3) //返回x的双曲正弦(hyperbolic sine)
Math.cosh(3) //返回x的双曲余弦(hyperbolic cosine)
Math.tanh(3)// 返回x的双曲正切(hyperbolic tangent)
Math.asinh(3) //返回x的反双曲正弦(inverse hyperbolic sine)
Math.acosh(3) //返回x的反双曲余弦(inverse hyperbolic cosine)
Math.atanh(3) //返回x的反双曲正切(inverse hyperbolic tangent) </script>
</head>
<body> </body>
</html>

此篇终,待续……



es6笔记1^_^let、string、number、math的更多相关文章

  1. Java基础(四):Java Number & Math 类、Character 类、String 类、StringBuffer & StringBuilder 类

    一.Java Number & Math 类: 1.Number类: 一般地,当需要使用数字的时候,我们通常使用内置数据类型,如:byte.int.long.double 等.然而,在实际开发 ...

  2. Java 学习(6):java Number & Math & String & 数组...常用类型

    目录 --- Number & Math类 --- Character 类 --- String 类 --- StringBuffer 类 --- 数组 Number & Math类: ...

  3. ES6笔记2

    ES6笔记2 Promise Promise 是 ES6 引入的异步编程的新解决方案,语法上是一个构造函数 一共有3种状态,pending(进行中).fulfilled(已成功)和rejected(已 ...

  4. ES6笔记(4)-- Symbol类型

    系列文章 -- ES6笔记系列 Symbol是什么?中文意思是标志.记号,顾名思义,它可以用了做记号. 是的,它是一种标记的方法,被ES6引入作为一种新的数据类型,表示独一无二的值. 由此,JS的数据 ...

  5. ES6笔记(5)-- Generator生成器函数

    系列文章 -- ES6笔记系列 接触过Ajax请求的会遇到过异步调用的问题,为了保证调用顺序的正确性,一般我们会在回调函数中调用,也有用到一些新的解决方案如Promise相关的技术. 在异步编程中,还 ...

  6. Java-Runoob:Java Number & Math 类

    ylbtech-Java-Runoob:Java Number & Math 类 1.返回顶部 1. Java Number & Math 类 一般地,当需要使用数字的时候,我们通常使 ...

  7. Number & Math

    Java Number & Math 类 一般地,当需要使用数字的时候,我们通常使用内置数据类型,如:byte.int.long.double 等. 实例 int a = 5000; floa ...

  8. ES6笔记系列

    ES6,即ECMAScript 6.0,ES6的第一个版本是在2015年发布的,所以又称作ECMAScript 2015 如今距ES6发布已经一年多的时间,这时候才去学,作为一个JSer,羞愧羞愧,还 ...

  9. ES6笔记(1) -- 环境配置支持

    系列文章 -- ES6笔记系列 虽然ES6已经发布一年多了,但在各大浏览器之中的支持度还不是很理想,在这查看ES6新特性支持度 Chrome的最新版本浏览器大部分已经支持,在Node.js环境上支持度 ...

随机推荐

  1. 纯CSS3打造七巧板

    原文:纯CSS3打造七巧板 最近项目上要制作一个七巧板,脑子里瞬间闪现,什么...七巧板不是小时候玩的吗... 七巧板的由来 先来个科普吧,是我在查资料过程中看到的,感觉很有意思. 宋朝有个叫黄伯思的 ...

  2. leetcode第20题--Valid Parentheses

    Problem: Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if ...

  3. sqlserver查询所有表的行数的sql语句

    原文:sqlserver查询所有表的行数的sql语句 select object_name(id),rowcnt from sysindexes where indid<2 and object ...

  4. Javascript多线程引擎(五)

    Javascript多线程引擎(五)之异常处理 C语言没有提供一个像Java一样的异常处理机制, 这就带来了一个问题, 对于一个子函数中发生异常后, 需要在父函数调用子函数的位置进行Check, 如果 ...

  5. 关于使用 jBox 对话框的提交问题

    http://www.cnblogs.com/haogj/archive/2012/11/04/2754303.html 关于使用 jBox 对话框的提交问题 jBox 是个不错的对话框组件. 在 A ...

  6. Unity Container

    Unity Container中的几种注册方式与示例 2013-12-08 22:43 by 小白哥哥, 22 阅读, 0 评论, 收藏, 编辑 1.实例注册 最简单的注册方式就是实例注册,Unity ...

  7. IOS开发小功能1:引导页的开发

    效果图如上,实现的是一个页面引导页,最后跳到主页面,主页面是一个navigationController,但是导航栏给我隐藏了. 文件目录:自己定制的viewcontroller以及navigatio ...

  8. IOC and DI

    Spring.Net 技术简介 IOC and DI   一 简单介绍            IOC 控制转移,就是将创建放到容器里,从而达到接耦合的目的,DI是 在容器创建对象的时候,DI读取配置文 ...

  9. DevExpress 学习使用之 SplitContainerControl

    无论是 .net framework 自带还是第三方组件,使用 Split 类控件时通常其 Panel 中都会包含多个子控件,在运行时不可避免遇到因改变 splitter 位置或改变窗体大小引起的界面 ...

  10. 企业架构研究总结(34)——TOGAF架构内容框架之架构制品(下)

    4.2.31 数据生命周期图(Data Lifecycle Diagram) 数据生命周期图是在业务流程的约束之下对业务数据在其整个生命周期(从概念阶段到最终退出)中对其进行管理的核心部分.数据从本质 ...