[TOC]
## 對js認識
### 宿主對象:瀏覽器
### 特點
* 解釋型的腳本語言,java以及c都是編譯后執行,而js是程序運行中編譯執行。如果中間報錯,其他的語句就不會執行,通過try catch處理異常
* 與java一樣,是基于對象的腳本語言。相關的研發工作也是這個思想為核心。
* 弱類型的語言,設計緊湊簡單。
* 動態性,可以為網頁增加動態性,屬于事件驅動型,當觸發相關事件時不需要經過瀏覽器單獨處理。
* 跨平臺型,不依賴于任何的操作系統,只需要一個瀏覽器作為載體處理。
## 語法組成部分
核心 (ECMAScript),包括了基本語法以及核心內置對象
文檔對象模型(dom),包括了獲取節點以及對文檔樣式,節點屬性,綁定事件的相關操作
瀏覽器對象模型(bom),包括了瀏覽器的基本屬性,以及對瀏覽器的相關操作。
### 核心語法
#### 詞法結構
* js程序是用unicode字符集編寫的
* js區分大小寫,而html不區分大小寫,所以注意
* 注釋格式 :
~~~
單行注釋://
多行注釋:/* */
段落注釋:
/*
* 這里是一段注釋
* 這里的注釋可以連寫多行
*/
~~~
* 直接量 :程序中可以直接使用的值,例如字符串,數字,符號等
* 標識符:用于表明函數或者變量名稱的,也可以用作某些語句的標記。js的標識符必須以字母、下劃線、或者美元符號開始,而后續的字符可以為字母、數字、下劃線、美元符號
* 保留字:js把一些標識符自己用,這些保留字不能當做標識符,下面是枚舉的一些保留字。
> break,delete.function,return,typeof,case,do,if,switch,var,catch,else,in,this,void,continue,false,instanceof,throw,while,debugger,finally,new,true,with,default,for,null,try,class,const,enum,extends,import,super以及很多其他全局變量和函數(如Number ,String,RegExp,Array,Boolean,Error 等)
* 分號:js的語句結束標記為分號,較好的書寫方式是語句所有的語句結束時都添加分號。需要注意的是,js并不是所有的換行都添加分號,而是在不添加就執行失敗的情況下添加分號,所以有時候系統自動添加的效果不是我們需要的效果。為了避免意外,建議所有需要語句結束的位置,手動都加上分號。
* js 的數據類型:原始類型,對象類型。
> 原始類型:數字,字符串,布爾值,null,undefined.
> 對象類型:js中幾乎所有的事物都是對象,與事物相關的值稱為屬性,能夠在對象上執行的操作稱為方法。常見的對象有String,Number,Boolean,數組,日期,函數,正則,math等等。
* 讀取器 默認所有的屬性都是可讀可寫的 (不詳細講解)
如果需要設置讀寫,那么通過getter 以及setter 方法單獨設置 。
* 字符集,注釋,直接量,標識符和保留字,可選的分號
* 類型(數字,文本,布爾值,null以及undefined,對象,類型轉換),值(值引用),變量(變量聲明以及作用域)
* 表達式和運算符(原始表達式,對象、數組、函數、屬性訪問的表達式,運算表達式,邏輯運算,數學運算,關系表達式,賦值表達式,算數符概述、其他運算符等)
* 語句(表達式語句,復合語句,聲明語句,條件,分支,循環,跳轉,其他語句)
* 對象(創建,屬性使用與查詢,序列化,對象方法,屬性的設置,特殊屬性)
* 數組,函數,類和模塊,正則表達式,子集以及拓展
### 文檔對象模型
* dom概述
* 選取元素
* 文檔結構和遍歷
* 屬性
* 元素內容
* 節點相關操作
* 文檔的幾何形狀和滾動
* html表單
* 其他特性
### bom
* 計時器,屬于window對象的方法,全局函數,但對窗口沒有什么操作。提醒的是,可以針對性的停止或者開啟某個定時器;定義的相關語法是函數塊或者字符串的函數名稱(如果不加引號,是立刻執行的);匿名函數不用加引號。
* 瀏覽器的定位和導航,location 是window 的屬性,也是一個對象
* window對象的history屬性也是一個對象,可以記錄瀏覽器的頁面歷史,并且進行相關的操作。history.api 的h5拓展。
* navigator ,包括瀏覽器的相關信息,包括瀏覽器全稱,版本號,操作系統,用戶代理(ua)。
* screen對象,窗口的相關屬性,通常用到的有大小,比如媒體查詢里所用的就是screen 的寬度。
* 對話框(dialog):alert(),confirm(),prompt(),比較復雜模擬對話框showModalDialog().備注:這些彈出框進行時,代碼會堵塞。
* onerror,多窗體,窗口的打開關閉等,iframe等
- 前端入門
- 前端入職須知
- 前端自我定位
- pc與手機頁面差別
- 前端書單
- 前端種子計劃
- 前端技術棧
- ps
- ps入門階段
- html
- html入門
- html代碼規范
- meta
- table
- iframe
- a標簽詳解
- image
- html代碼審查工具
- h5專題
- h5入門
- h5新增屬性
- canvas畫布教程
- audio/video
- Geolocation
- Websockets
- Web storage
- Communication
- Web Workers
- requestAnimationFrame
- css
- css入門必學
- css代碼規范
- 項目字體規范
- css基本位置布局
- css常見樣式命名規則
- css代碼優化建議
- css常用樣式名
- css選擇器攻略
- css盒子模型的理解
- css屬性繼承與默認值
- css代碼審查工具
- css中常見的知識盲區
- css3新特性淺談
- css新特性了解
- border-radius
- background
- transform
- animation
- white-space
- css常用技術
- 文本兩端對齊
- css之浮動解決方案
- css優化建議
- 文本超出省略
- img-sprites
- rem布局教程
- 水平居中&垂直居中
- 固寬&變寬布局
- 寬高固定比例的盒模型
- 樣式預處理語言
- less教程
- sass教程
- postcss教程
- js
- javascript入門
- js代碼規范
- js基礎拓展
- js代碼審查工具
- js性能優化
- js基本語句
- 基本運算
- 基本語句語法
- js對象
- es6入門
- obj
- Array
- Date
- String
- Boolean
- Number
- Json
- RegExp
- Math
- function
- jquery入門
- jq核心思想
- jq基本語法
- jq插件庫匯總
- js常用技術
- break&continue區別
- js對日期轉換
- js控制運動-move.js
- 原生js-cookie語法
- ajax請求后回調
- 表單數據序列化
- zepto
- zepto入門
- 百度touchjs
- js編程
- 插件庫
- 功能性插件
- pdfjs
- wdatepicker
- qrcoder
- barcode插件
- photoviewer
- hammer.js
- echarts
- 交互組件
- layerjs
- java
- java入門
- java基本語句
- springMVC
- javaweb
- vm模板引擎
- freemarker
- maven教程
- mySql教程
- flex教程
- flex入門
- git教程
- git入門
- git分支
- git-tag管理
- git注意事項
- git-torise入門
- ide-git插件使用
- web
- web兼容
- web兼容思想
- pc端兼容適配文檔
- pc端兼容bug匯總
- ie兼容bug匯總
- 手機兼容bug匯總
- web安全
- jeecms
- web存儲
- app/h5組件
- 安卓教程
- ios教程
- 前端教程
- rubikx的教程
- 其他
- artTemplate
- tmod使用
- 跨域問題
- markdown教程
- 常用工具
- postman-api調試
- web常識
- 瀏覽器ua統計
- ui框架
- easyui
- bootstrap
- 入門推薦
- weui
- sui-pc
- sui-mobile
- layerUi