1,瀏覽器環境 中的 Javascript
瀏覽器中 Javascript 的組成部分
-
ECMAScript核心 + DOM + BOM
2,Node環境 中的 Javascript
-
Node.js 中 Javascript 的組成部分
-
ECMAScript 核心 + 全局成員 + 核心 API 模塊
-
全局成員:console、setInterval、setTimeout。。。
-
核心 API 模塊:就是 Node 平台 單獨提供的一些API,這些API是Node平台所獨有的;
-
-
注意:Node.js 中 沒有 BOM 和 DOM
-
由於 Node 服務器端運行環境中,沒有瀏覽器 和 HTML 的概念,所以,Node中的javascript 提出了 DOM 和 BOM 這兩個對象模型,取而代之的,是 全局成員 和 核心 API 模塊;
-
二,ECMAScript 規范,瀏覽器中的js,Node中的js之間的關系
-
ECMAScript 規范(標准):就是一本書,這本書中規定了語言的特性;
-
瀏覽器中的js:
-
瀏覽器中的 js 組成部分:ECMAScript 核心 + DOM + BOM
-
-
Node中的js:
-
Node中的 js 組成部分: ECMAScript 核心 + 全局成員 + 核心API成員
-
三,總結
-
什么是 Node.js(我們自己給它下個定義)
就是一個服務器端的Javascript運行環境,可以讓程序員,通過 Javascript 做 后台服務器編程開發
-
學習 Node.js 可以做什么
-
像 PHP 一樣,使用 Javascript 編寫符合規范的后端 API 接口 或 網站
-
使用 Node.js 開發一些實用的工具 或 包
-
基於 Socket 技術,開發類似於聊天室之類的即時通訊項目
-
基於 Electron 環境,開發桌面軟件
-
ect...
-
四、ECMAScript 6常用語法
4.1 let(變量) 與 const(常量)
-
之前定義變量,用 var 關鍵字;有如下主要缺點:
-
存在變量提升問題,降低 js 代碼的可閱讀性
-
沒有塊級作用域,容易造成變量污染
-
-
let 主要特性:
-
不存在變量提升問題,只有定義之后才能使用此變量
-
先定義再使用(暫時性死區),不可以重復定義,否則會報錯
-
有
{ }
作用域
-
-
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 箭頭函數(常用)
-
語法:
-
定義普通的
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)
-
-
箭頭函數,本質上就是一個匿名函數;
-
箭頭函數的特性: 箭頭函數內部的 this, 永遠和 箭頭函數外部的 this 保持一致;
-
變體:
-
變體1:如果箭頭函數,左側的形參列表中,只有一個參數,則,左側小括號可以省略;
-
變體2:如果右側函數體中,只有一行代碼,則,右側的
{ }
可以省略; -
變體3:如果箭頭函數左側 只有一個 形參,而且右側只有一行代碼,則 兩邊的
()
和{}
都可以省略
-
-
注意: 如果我們省略了 右側函數體的
{ }
,那么,默認會把 右側函數體中代碼的執行結果,當作箭頭函數的調用結果 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')//讀取的數據
})