一,语言 和 环境(平台) 之间的关系

1,浏览器环境 中的 Javascript

浏览器中 Javascript 的组成部分

  • ECMAScript核心 + DOM + BOM

2,Node环境 中的 Javascript
  1. Node.js 中 Javascript 的组成部分

    • ECMAScript 核心 + 全局成员 + 核心 API 模块

    • 全局成员:console、setInterval、setTimeout。。。

    • 核心 API 模块:就是 Node 平台 单独提供的一些API,这些API是Node平台所独有的;

  2. 注意:Node.js 中 没有 BOM 和 DOM

    1. 由于 Node 服务器端运行环境中,没有浏览器 和 HTML 的概念,所以,Node中的javascript 提出了 DOM 和 BOM 这两个对象模型,取而代之的,是 全局成员 和 核心 API 模块;

二,ECMAScript 规范,浏览器中的js,Node中的js之间的关系

  1. ECMAScript 规范(标准):就是一本书,这本书中规定了语言的特性;

  2. 浏览器中的js:

    • 浏览器中的 js 组成部分:ECMAScript 核心 + DOM + BOM

  3. Node中的js:

    • Node中的 js 组成部分: ECMAScript 核心 + 全局成员 + 核心API成员

三,总结

  1. 什么是 Node.js(我们自己给它下个定义)

    就是一个服务器端的Javascript运行环境,可以让程序员,通过 Javascript 做 后台服务器编程开发

  2. 学习 Node.js 可以做什么

    • 像 PHP 一样,使用 Javascript 编写符合规范的后端 API 接口网站

    • 使用 Node.js 开发一些实用的工具

    • 基于 Socket 技术,开发类似于聊天室之类的即时通讯项目

    • 基于 Electron 环境,开发桌面软件

    • ect...

四、ECMAScript 6常用语法

4.1 let(变量) 与 const(常量)
  1. 之前定义变量,用 var 关键字;有如下主要缺点:

    • 存在变量提升问题,降低 js 代码的可阅读性

    • 没有块级作用域,容易造成变量污染

  2. let 主要特性:

    • 不存在变量提升问题,只有定义之后才能使用此变量

    • 先定义再使用(暂时性死区),不可以重复定义,否则会报错

    • { } 作用域

  3. const 主要特性:

    • 不存在变量提升问题,只有定义之后才能使用此变量

    • const 定义的常量*无法被重新赋值,因为常量无法修改,变量可修改*

    • 当定义常量的时候,必须定义且初始化(即需要赋值),否则报语法错误

    • const 定义的常量,也有 块级作用域

    • for循环里面定义的const常量,拥有独立的块级作用域,每次循环,都是一个新的作用域

4.2 变量的解构赋值(常用)

定义:所谓的解构赋值,就是把 某个对象中的属性,当作变量,给解放出来,这样,今后就能够当作变量直接使用了;

  • 可以使用 :为解构出来的变量重命名

  // 变量的解构赋值
定义 let user={
  name:'zs',
  age:20,
  gender:'男'
}
结构赋值 const { name : name123, age, gender } = user
name : name123相当于,把变量name的值赋值给name123
console.log(name123)
4.3 箭头函数(常用)
  1. 语法:

    • 定义普通的 function 函数

      function show() {
         console.log('这是普通 function 定义的 show 方法')
      }
      var add(x,y){
       return x+y;
      }
      add(1,2)
    • 把方法定义为箭头函数(最完整的写法)

      (形参列表) => { 函数体代码 }
      () => {
       console.log('这是普通 function 定义的 show 方法')
      }
      var add=(x,y)=>x+y;
      add(1,2)
  2. 箭头函数,本质上就是一个匿名函数

  3. 箭头函数的特性: 箭头函数内部的 this, 永远和 箭头函数外部的 this 保持一致;

  4. 变体

    • 变体1:如果箭头函数,左侧的形参列表中,只有一个参数,则,左侧小括号可以省略;

    • 变体2:如果右侧函数体中,只有一行代码,则,右侧的 { } 可以省略;

    • 变体3:如果箭头函数左侧 只有一个 形参,而且右侧只有一行代码,则 两边的 (){} 都可以省略

  5. 注意: 如果我们省略了 右侧函数体的 { },那么,默认会把 右侧函数体中代码的执行结果,当作箭头函数的调用结果 return 出去;

4.4 对象中 定义方法定义属性 的便捷方式
var a={
name: 'zs',
age:18,
say(){
console.log('111');
}
}

五,文件操作

1,文件读取

fs.readFile

const fs = require('fs')//引入模块
fs.readFile('./files/1.txt','utf-8',function(err,data){
console.log(err) //err为null,就证明成功了
console.log(data)//读取的数据
}) fs.readFile('./files/1.txt','utf-8',function(err,data){

console.log('读取成功+'data')//读取的数据
})

最新文章

  1. VS2013发布网站,vs2013发布
  2. 物理主机win 7系统迁移至VMware ESXI服务器
  3. 由Memcached使用不当而引发性能问题的两个经验总结
  4. memcached在windows7上的安装问题
  5. Out of resources when opening file 错误解决
  6. IPv6 tutorial 2 New features: Routing
  7. putty命令行提交本地修改文件到git
  8. (解决方法)Android studio 运行时报错Do you want to uninstall the existing application?的解决方法
  9. Git reset到某一次commit
  10. 安卓TV开发(十) 智能电视开发之在线视频直播
  11. 英语口语练习系列-C14-常用片语
  12. uva-757-贪心
  13. tjoi2018D2T2(luogu4590) 游园会 (状压dp)
  14. git拉取远程分支
  15. 前台框架vue.js中怎样嵌入 Echarts 组件?
  16. 包装类、object、单例模式、final、抽象类
  17. instanceof 用于确定一个 PHP 变量是否属于某一类 class 的实例 , 返回true或者false
  18. 十二:video 视频
  19. Sqlite数据库字符串处理函数replace
  20. 有用的Python代码片段

热门文章

  1. 4.13 省选模拟赛 传销组织 bitset 强连通分量 分块
  2. 4.2 省选模拟赛 旅行路线 广义SAM
  3. 谁说Cat不能做链路跟踪的,给我站出来
  4. JS解密入门——有道翻译
  5. 9、Bridge 桥梁模式 将类的功能层次结构与实现层结构分离 结构型设计模式
  6. Docker 启动 Nginx
  7. arcgis api for js 之网络分析服务发布
  8. 【模式识别与机器学习】——PCA与Kernel PCA介绍与对比
  9. 树堆(Treap)学习笔记 2020.8.12
  10. Express Response 之 end /send 傻傻分不清楚