一、字符串新特性--双丿(撇)号声明字符串
、多行字符串
var myName = `fang
my hao li
jsk c sdf` //这样不会报错。
、字符串模板
console.log(`qsdaf ${myName}`)
console.log(`qsdaf ${myName()}`)//函数和变量可以直接写这里面${}
console.log(`<div>
<span>${myName}</span>
</div>`)//这样就可以很快的写出来,而不用加号连接;
、自动拆分符串
function test(a,b,c) {
console.log(a);
console.log(b);
console.log(c);
}
var myname = 'ni hao';
var getAge = function(){
return 18
}//下面的调用,a为一个数组['hello my name is',',im','']; b为'ni hao';c为18;也就是说这样会以变量为分隔
test`hello my name is ${myname},im ${getAge()}`;
二、 参数新特性
1、 参数类型--在参数名称后面使用冒号来指定参数的类型
、any 可以任何类型
var myname: any = 18;
、string 字符串类型
var myname: string = "zhang san"
、number 数字类型
var my: number = 20
、boolean 布尔类型
var name: boolean =true
function test (name:string):string {
return ""
}//意思为参数只能为字符串,函数返回值也只能是字符串;
、自定义类型
class person {
name:string;
age: number;
}
var zhangsan :Person = new Person()
zhangsan.name = "zhailiang";
zhangsan.age = 18
2、 参数默认值--在参数声明后面用等号来指定参数的默认值
var my: string = "fang";
function test(a:string,b:string,c:string="wo"){
console.log(a)
console.log(b)
console.log(c)
}
test{'sfa','sss','asd'}//没有给默认值时必须给3个参数不然会报错;有默认值的参数可以不写(但必须写在最后面)
3、可选参数--在方法的参数声明后面用问号标明此参数为可选参数
function test(a:string,b?:string,c:string="wo"){
console.log(a);
console.log(b);//为b.length时会报错
console.log(c);
}
test{'sfa'} //这样不会报错,b为undefined;还有一个注意的也像默认参数一样,可选参数必定要写在必写参数的后面
三、函数新特性
1、Rest and Spread操作符(...)--用来声明任意量的方法参数
function func1(...args) {
args.forEach(function(arg){
console.log(arg);
})
}
func1(1,2,3);func1(1,3,4,5,6)//正向用
function func2(a,b,c) {
console.log(a);
console.log(b);
console.log(c);
}
var args = [1,2],args1 = [5,6,7];
func1(...args);func1(...args1)//反向用
2、generater函数--控制函数的执行过程、手工暂停和恢复代码执行
function* doSomething(){
console.log("start");
yield;
console.log("finish")
}
var fun1 =doSomething();
func1.next();//会在yield的地方停止
func1.next();
3、destructuring析构表达式--通过表达式将对象或数组拆解成任意数量的变量
function getStock(){
return {
code:"IBM",
price: {
price1:100,
price2:200
}
}
}
var {code:codex,price:{price2}} = getStock();
console.log(codex);
console.log(price2)//从对象中拆解
var array = [1,2,3,4];
var[number1,number2] = array;
console.log(number1)//1
console.log(number2)//2
var[,,,number1,number2] = array;
console.log(number1)//3
console.log(number2)//4
var[number1,number2,...others] = array;
console.log(number1)//1
console.log(number2)//2
console.log(others)//[3,4]
四、表达式和循环
1、箭头表达式--用来声明匿名函数,消除传统匿名函数的this指针问题
var sun = (arg1,arg2) =>arg1+arg2//只有一行不用写大括号,也不用写return关键字
var sun =arg3 =>console.log(arg3)//只有一个参数时不用写小括号
var myArray = [1,2,3,4,5,6];
console.log(myArray.filter(value =>value%2 == 0)) function gerStock(name:string){
this.name = name;
setInterval(()=> {
console.log("name is:" + this.name);
},1000)
}
var stock = new getStock("IBM")//可以看到打出来为“name is: IBM”,消除了传统匿名函数this指针问题,要是用ES5写就拿不到IBM
2、forEach() ,for in 和 for of
var myArray = [1,2,3,4];
myArray.desc = 'four number';
myArray.forEach(value=>console.log(value))//会忽略掉它的属性,并且不可以被打断
for (var n in myArray){
console.log(n)//打出的键值对的键和属性 0,1,2,3,desc
console.log(myArray[n])//打出的每一个值
}
for (var n of myArray) {
if(n>2) break;
console.log(n)
}//和forEach差不多只是可以被打断用break ;集合,数组都可以用,也可以用在字符串上,这时会把字符串的每一个字符都打印出来

typeJavaScript笔记----字符串,参数,函数,表达式,循环的更多相关文章

  1. JavaScript高级程序设计(读书笔记)之函数表达式

    定义函数的方式有两种:一种是函数声明,另一种就是函数表达式. 函数声明的一个重要特征就是函数声明提升(function declaration hoisting),意思是在执行代码前会先读取函数声明. ...

  2. JavaScript 高级程序设计(第3版)笔记——chapter7:函数表达式

    一.函数表达式的语法形式 匿名函数 var functionName = function(arg0, arg1, arg2) { //函数体 } 二.函数表达式没有函数提升 var a = 1; i ...

  3. javascript笔记05:函数表达式和函数语句的区别

    1.首先是函数语句: myfunc(); function myfunc() { //执行一些语句 } 当函数语句被定义的时候,在一个脚本代码被优先考虑,因此,无论该函数是定义之前或者定义之后都可以被 ...

  4. C学习笔记-字符串处理函数

    字符串函数是最问常用的库函数之一,本文整理了常用的字符串函数,其来源为互联网 函数名: stpcpy 功 能: 拷贝一个字符串到另一个 用 法: char *stpcpy(char *destin, ...

  5. Java学习笔记——字符串常用函数

    class JavaTest4_String { public static void main(String[] args) { String str1 = "IOS,ANDROID,BB ...

  6. js高级程序设计(七)函数表达式

    定义函数的方式有两种:一种是函数声明,另一种就是函数表达式.函数声明的语法是这样的. function functionName(arg0, arg1, arg2) { //函数体 } Firefox ...

  7. 字符串join函数跟+号测试

    字符串join函数for循环+区别: 原因是这样的,字符串是不可变对象,当用操作符+连接字符串的时候,每执行一次+都会申请一块新的内存,然后复制上一个+操作的结果和本次操作的右操作符到这块内存空间,因 ...

  8. Scala学习笔记(二)表达式和函数

    笔记的整理主要针对Scala对比Java的新特性:   1.if表达式 if表达式是有结果返回的. val a= if (5>2) "你好" else 1 a的值为if表达式 ...

  9. <深入理解JavaScript>学习笔记(4)_立即调用的函数表达式

    前言 大家学JavaScript的时候,经常遇到自执行匿名函数的代码,今天我们主要就来想想说一下自执行.(小菜理解:的确看到好多,之前都不知道这是自执行匿名函数) 在详细了解这个之前,我们来谈了解一下 ...

随机推荐

  1. win7 64位下如何安装配置mysql-5.7.7-rc-winx64

    距离上次安装MySQL已经过去好久了.步骤这些,有可能会忘记.简单记录一下吧.(参考了一些网络上的博客.) 1.mysql-5.7.5-m15-winx64.zip下载 官方网站下载地址: http: ...

  2. NHibernate:教你如何搭建数据访问层?

    NHibernate:教你如何搭建数据访问层? 什么是NHibernate NHibernate 是一个基于.net 的针对关系型数据库的对象持久化类库.NHibernate 来源于非常优秀的基于Ja ...

  3. 分享一个C#自定义事件的实际应用

    在C#.NET的开发中,事件是经常接触到的概念,比如为按钮添加点击事件,并写入点击按钮触发事件要运行的代码.不管是ASP.NET还是WinForm等各种形式的应用程序,最经常是为系统生成的事件写具体代 ...

  4. CODEFORCES #272 DIV2[为填完]

    #272是自己打的第一场cf,感觉这一套质量挺棒的,不像后两场略水 //先附上A,B,C的题解,因为离noip只剩下一点时间了,所以之后不一定还刷cf,暂且就先放上前三题好了 A题目大意忘了.懒得看, ...

  5. .NET重构—单元测试重构

    .NET重构—单元测试重构 阅读目录: 1.开篇介绍 2.单元测试.测试用例代码重复问题(大量使用重复的Mock对象及测试数据) 2.1.单元测试的继承体系(利用超类来减少Mock对象的使用) 2.1 ...

  6. [NLP自然语言处理]计算熵和KL距离,java实现汉字和英文单词的识别,UTF8变长字符读取

    算法任务: 1. 给定一个文件,统计这个文件中所有字符的相对频率(相对频率就是这些字符出现的概率——该字符出现次数除以字符总个数,并计算该文件的熵). 2. 给定另外一个文件,按上述同样的方法计算字符 ...

  7. linux shell基础语法

    1.第一个Shell脚本 打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用php写shell 脚本,扩展名就用php好了. 输入一些代码 ...

  8. CenOS下安装Eclipse并配置PyDev

    为方便安装,使用SecureCRT来操作CentOS 1. 更改网络配置 虚拟机使用桥接方式上网(默认是NAT方式) 2. 启动后让虚拟机上网 3. 启动终端查看ip地址 4. 使用SecureCRT ...

  9. BST&AVL&红黑树简单介绍

    (BST&AVL&红黑树简单介绍) 前言: 节主要是给出BST,AVL和红黑树的C++代码,方便自己以后的查阅,其代码依旧是data structures and algorithm ...

  10. struts2对ognl表达式的使用(配图解加讲解)

    ognl它是一个功能强大的表达式语言,用来获取和设置Java对象的属性,它旨在提供一个更高的更抽象的层次来对Java对象图进行导航. 先看一张示意图 如果是下面的除了第一种valueStack的下面几 ...