摘要:用和包裹的內(nèi)容,稱為字符串。關(guān)系運算符用于進行比較的運算符。強制依賴于,非強制依賴于。使用場合全局環(huán)境構(gòu)造函數(shù)對象的方法閉包閉包是指有權(quán)訪問另一個函數(shù)作用域中的變量的函數(shù)。所有全局對象函數(shù)以及變量均自動成為對象的成員。
1 什么是JavaScript
JavaScript一種直譯式腳本語言,一種基于對象和事件驅(qū)動并具有安全性的客戶端腳本語言;
也是一種廣泛應用客戶端web開發(fā)的腳本語言。
簡單地說,JavaScript是一種運行在瀏覽器中的解釋型的編程語言。
3 JS的使用方法
HTML標簽中內(nèi)嵌JS;
HTML頁面中直接使用JS:
引用外部JS文件:
4 變量
變量:是用于存儲信息的"容器",是命名的內(nèi)存空間,可以使用變量名稱找到該內(nèi)存空間;
JavaScript 的變量是松散類型(弱類型)的,就是用來保存任何類型的數(shù)據(jù)。
在定義變量的時候不需要指定變量的數(shù)據(jù)類型。
JavaScript 定義變量有四種方法:const、let、var,還有一種是直接賦值,比如a = " a"(不規(guī)范,不推薦使用)
var 定義的變量可以修改,如果不初始化會輸出undefined,不會報錯。
let let是塊級作用域,定義的變量只在let 命令所在的代碼塊內(nèi)有效,變量需要先聲明再使用。
const 定義的變量不可以修改,而且必須初始化,const定義的是一個恒定的常量,
聲明一個只讀的常量或多個,一旦聲明,常量值就不能改變。
在函數(shù)外聲明的變量作用域是全局的,全局變量在 JavaScript 程序的任何地方都可以訪問;
在函數(shù)內(nèi)聲明的變量作用域是局部的(函數(shù)內(nèi)),函數(shù)內(nèi)使用 var 聲明的變量只能在函數(shù)內(nèi)容訪問。
JS中所有變量類型聲明,均使用var關(guān)鍵字。變量的具體數(shù)據(jù)類型,取決于給變量賦值的執(zhí)行。
同一變量可在多次不同賦值時,修改變量的數(shù)據(jù)類型。
變量的命名規(guī)范
變量命名名要符合駝峰法則:變量開頭為小寫,之后每個單詞首字母大寫。
5 JavaScript 變量的命名規(guī)則變量命名必須以字母、下劃線”_”或者”$”為開頭。其他字符可以是字母、_、美元符號或數(shù)字。
變量名中不允許使用空格和其他標點符號,首個字不能為數(shù)字。
變量名長度不能超過255個字符。
變量名稱對大小寫敏感(y 和 Y 是不同的變量),JavaScript 語句和 JavaScript 變量都 對大小寫敏感。
變量名必須放在同一行中。
不能使用腳本語言中保留的關(guān)鍵字、保留字、true、false 和 null 作為標識符。
6 JS中的變量的數(shù)據(jù)類型String:字符串類型。用""和""包裹的內(nèi)容,稱為字符串。
Number:數(shù)值類型??梢允切?shù),也可以是正數(shù)。
boolean:真假,可選值true/false。
Object:(復雜數(shù)據(jù)類型)
Null:表示為空的引用。var a = null;
Undefined:未定義,用var聲明的變量,沒有進行初始化賦值。var a;
7 JavaScript對象
JavaScript 對象是擁有屬性和方法的數(shù)據(jù),是變量的容器。
對象:是封裝一個事物的屬性和功能的程序結(jié)構(gòu),是內(nèi)存中保存多個屬性和方法的一塊存儲空間。
JavaScript中所有事物都是對象:數(shù)字、字符串、日期、數(shù)組等。
JavaScript對象可以是字面量創(chuàng)建、分配給變量,數(shù)組和其他對象的屬性、作為參數(shù)傳遞給函數(shù)、有屬性和作為返回值。
function MyFun(){ };分配給其他對象的變量,數(shù)組和屬性:
var myFun = function(){ }; myArray.push(function(){ }); myObject.myFun = function(){ };作為參數(shù)傳遞給其他函數(shù):
function myFun(someFunc){ someFunc(); } myFunc(function(){ });有屬性:
var myFunc = function(){ };作為返回值:
function myFunc(){ return function(){ } }在JavaScript中定義對象有5種方式:
基于已有對象擴充其屬性和方法
工廠方式
構(gòu)造函數(shù)方式
原型(“prototype”)方式
動態(tài)原型方式
JS 中的對象分為三類:內(nèi)置對象(靜態(tài)對象):js本身已經(jīng)寫好的對象,我們可以直接使用不需要定義它。
常見的內(nèi)置對象有 Global、Math(它們也是本地對象,根據(jù)定義每個內(nèi)置對象都是本地對象)。
本地對象(非靜態(tài)對象):必須實例化才能使用其方法和屬性的就是本地對象。
常見的本地對象有 Object、Function、Data、Array、String、Boolean、Number、RegExp、Error等
宿主對象:js運行和存活的地方,它的生活環(huán)境就是DOM(文檔對象模式)和BOM(瀏覽器對象模式)。
8 JavaScript函數(shù)使用函數(shù)前要先定義才能調(diào)用,函數(shù)的定義分為三部分:函數(shù)名,參數(shù)列表,函數(shù)體
定義函數(shù)的格式:
function 函數(shù)名([參數(shù)1,參數(shù)2...]){ 函數(shù)執(zhí)行部分; return 表達式; }函數(shù)有三種定義方法:
函數(shù)定義語句
函數(shù)直接量表達式
Function構(gòu)造函數(shù)
函數(shù)有四種調(diào)用模式:函數(shù)調(diào)用模式(通過函數(shù)調(diào)用)
方法調(diào)用模式(通過對象屬性調(diào)用)
構(gòu)造函數(shù)模式(如果是作為構(gòu)造函數(shù)來調(diào)用,那么this指向new創(chuàng)建的新對象)
函數(shù)上下文(借用方法模式:它的this指向可以改變,而前三種模式是固定的);函數(shù)上下文就是函數(shù)作用域;基本語法:apply 和 call 后面都是跟兩個參數(shù)。)
在javascript函數(shù)中,函數(shù)的參數(shù)一共有兩種形式:(實際參數(shù)與形式參數(shù))
形參:在函數(shù)定義時所指定的參數(shù)就稱之為“函數(shù)的形參”。
實參:在函數(shù)調(diào)用時所指定的參數(shù)就稱之為“函數(shù)的實參”。
算術(shù)運算符:主要是用來進行JavaScript中的算術(shù)操作。(+、-、*、/、%、++、--)
賦值運算符: = 用于給JavaScript 變量賦值,其作用就是把右側(cè)的值賦給左側(cè)的變量。
關(guān)系運算符:用于進行比較的運算符。
主要有小于(<)、大于(>)、等于(==)、大于等于(>=)、小于等于(<=)、不等(!=)、恒等(===)、不恒等(!==)。
邏輯運算符:邏輯運算符通常用于布爾值的操作,返回結(jié)果是一個布爾類型,一般和關(guān)系運算符配合使用;
有三個邏輯運算符:邏輯與(AND)、邏輯或(OR)、邏輯非(NOT)。
字符串連接運算符:是用于兩個字符串型數(shù)據(jù)之間的運算符,它的作用是將兩個字符串連接起來。
在JavaScript中,可以使用+和+=運算符對兩個字符串進行連接運算。
三目操作符(條件運算符):? 根據(jù)不同的條件,執(zhí)行不同的操作/返回不同的值。
If 語句:只有當指定條件為true時,使用該語句來執(zhí)行代碼
if-else 語句:當條件為true時執(zhí)行代碼,當條件為false時執(zhí)行其他代碼
if-else if-else 語句:使用該語句來選擇多個代碼塊之一來執(zhí)行
switch 語句:同上,switch的工作原理呢?
首先設置表達式n(通常是一個變量),隨后表達式的值會與結(jié)構(gòu)中的每個case值作比較;
如果存在匹配則該關(guān)聯(lián)代碼塊執(zhí)行;然后使用break來阻止代碼自動的向下一個case運行;
default關(guān)鍵詞來規(guī)定匹配不存在時做的事情。
for 循環(huán):代碼塊有一定的次數(shù)。for 有三個表達式:1 聲明循環(huán)變量 2 判斷循環(huán)條件 3 更新循環(huán)變量
特點:先判斷再執(zhí)行,與while相同。
while 循環(huán):當指定的條件為true時循環(huán)指定的代碼塊
do/while 循環(huán):同while循環(huán)一樣。
特點:先執(zhí)行再判斷,即使初始條件不成立,do/while循環(huán)至少執(zhí)行一次。
聲明變量
判斷循環(huán)條件
執(zhí)行循環(huán)體操作
更新循環(huán)變量
最后執(zhí)行循環(huán)2-4,直到條件不成立,跳出循環(huán)
12 JavaScript Break 和Continue 語句break:跳出本層循環(huán),繼續(xù)執(zhí)行循環(huán)后面的語句。
如果循環(huán)有多層,則break只能跳出一層。
continue:跳過本次循環(huán)剩余的代碼,繼續(xù)執(zhí)行下一次循環(huán)。
對與for循環(huán),continue之后執(zhí)行的語句,是循環(huán)變量更新語句i++;
對于while、do-while循環(huán),continue之后執(zhí)行的語句,是循環(huán)條件判斷;
因此,使用這兩個循環(huán)時,必須將continue放到i++之后使用,否則,continue將跳過i++進入死循環(huán)。
一種是程序?qū)懙倪壿嫴粚?,導致代碼執(zhí)行異常;
一種是執(zhí)行過程中,程序可能遇到無法預測的異常情況而報錯。
throw 聲明
onerror 事件
jQuery 函數(shù)是 $() 函數(shù)(jQuery 函數(shù))。
jQuery 庫包含以下功能:
HTML 元素選取、元素操作、CSS 操作、HTML 事件函數(shù)、JavaScript 特效和動畫、HTML DOM 遍歷和修改、AJAX、Utilities
面向?qū)ο缶幊贪?創(chuàng)建對象、原型繼承、class繼承。
類是對象的類型模板;實例是根據(jù)類創(chuàng)建的對象。
jQuery 優(yōu)點:
分布規(guī)模小
學習曲線平緩,在線幫助多
語法簡潔
容易延伸
消除了瀏覽器差
簡潔的操作DOM的方法
輕松實現(xiàn)動畫
修改CSS等各種操作
缺點:
增加了本機API的速度開銷
瀏覽器兼容性的改善降低了它的性能
用法扁平
有些開發(fā)人員抵制使用
AngularJs企業(yè)級框架其最為核心的特性為:MVC、模塊化、自動化雙向數(shù)據(jù)綁定、語義化標簽及依賴注入等。
React框架React被稱為構(gòu)建用戶接口而提供的Javascript庫;主要用來構(gòu)建UI,其專注于MVC的V部分。
vue未來的主流vue.js 是用來構(gòu)建web應用接口的一個庫,技術(shù)上,Vue.js 重點集中在MVVM模式的ViewModel層,它連接視圖和數(shù)據(jù)綁定模型通過兩種方式。
Require JsRequireJs是一個javascript模塊加載器,提高網(wǎng)頁的加載速度和質(zhì)量。
Backone框架Backone是一個幫助開發(fā)重量級Javascript應用的框架,但它本身簡單的框架。
其文件體積很小,壓縮后只有5.3KB,提供了全功能的MVC框架及路由。
Backone強制依賴于Underscore.js,非強制依賴于jQuery/Zepto。
數(shù)據(jù)可視化和圖表是Web應用中不可或缺的一部分。
d3.js就是最流行的可視化庫之一,它允許綁定任意數(shù)據(jù)到DOM,然后將數(shù)據(jù)驅(qū)動轉(zhuǎn)換應用到Document中。
方法中的this指向調(diào)用它所在方法的對象。
多帶帶使用this,指向全局對象。
函數(shù)中,函數(shù)所屬者默認綁定到this上。
this使用場合:
-全局環(huán)境
構(gòu)造函數(shù)
對象的方法
Node
16 JavaScript閉包閉包是指有權(quán)訪問另一個函數(shù)作用域中的變量的函數(shù)。
創(chuàng)建閉包就是創(chuàng)建了一個不銷毀的作用域。
閉包需要了解的幾個概念: 作用域鏈、執(zhí)行上下文、變量對象。
閉包的好處有:
緩存
面向?qū)ο笾械膶ο?/p>
實現(xiàn)封裝,防止變量跑到外層作用域中,發(fā)生命名沖突
匿名自執(zhí)行函數(shù),匿名自執(zhí)行函數(shù)可以減少內(nèi)存消耗
壞處:
內(nèi)存消耗
涉及到跨作用域訪問是時會導致性能耗損
17 JS Window所有瀏覽器都支持 window 對象。它表示瀏覽器窗口。
所有 JavaScript 全局對象、函數(shù)以及變量均自動成為 window 對象的成員。
全局變量是 window 對象的屬性。
全局函數(shù)是 window 對象的方法。
JSON 是一種輕量級的數(shù)據(jù)交換格式;JSON是獨立的語言 ;JSON 易于理解。
語法規(guī)則:
數(shù)據(jù)為 鍵/值 對。
數(shù)據(jù)由逗號分隔。
大括號保存對象。
方括號保存數(shù)組。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/104634.html
摘要:學習最好的方法之一是通過視頻教程進行在線學習。這里列出十個免費在線學習的地址,讓你的學習更方便更有效。是一個非常好的免費在線學習得網(wǎng)站。為初學者增加了大量的指南和其他資源。在這里,你可以找到有關(guān)和的免費在線課程。 我們都聽說過 JavaScript 這個術(shù)語,但我們中只有少數(shù)人知道它的用法和應用。這里的我們中的少數(shù)是指技術(shù)青年、網(wǎng)絡程序員和IT專業(yè)人員。但是,對于外行來說,JavaS...
摘要:基礎(chǔ)鞏固基礎(chǔ)總結(jié)使用已經(jīng)好幾年了,由于工作主要是做服務端開發(fā),在工作中逐漸發(fā)現(xiàn)的使用范圍原來越廣泛。這里要注意,務必將基礎(chǔ)部分掌握牢靠,磨刀不誤砍柴功,只有將基礎(chǔ)部分掌握并建立起系統(tǒng)的知識體系,在后面學習衍生的其他模式才能游刃有余。 基礎(chǔ)鞏固:JavaScript基礎(chǔ)總結(jié) 使用JavaScript已經(jīng)好幾年了,由于工作主要是做服務端開發(fā),在工作中逐漸發(fā)現(xiàn)JavaScript的使用范圍原...
摘要:請記住,這些書中的一些可能不是最新的,但概念和基礎(chǔ)仍應適用。是最好的老師之一。的秘密由部分組成。在你完成這些書后,查看書籍和最好的本土書籍。 我看過三本,第1本,第二本,第四本。第一本買的的實體書,其他兩本看的是電子書。第一本是大名鼎鼎老道寫的,書很薄,但是非常經(jīng)典。javascirpt忍者秘籍是jquery的作者寫的,也是非常經(jīng)典。you dont kown js系列也是非常好??戳?..
摘要:是文檔的一種表示結(jié)構(gòu)。這些任務大部分都是基于它。這個實踐的重點是把你在前端練級攻略第部分中學到的一些東西和結(jié)合起來。一旦你進入框架部分,你將更好地理解并使用它們。到目前為止,你一直在使用進行操作。它是在前端系統(tǒng)像今天這樣復雜之前編寫的。 本文是 前端練級攻略 第二部分,第一部分請看下面: 前端練級攻略(第一部分) 在第二部分,我們將重點學習 JavaScript 作為一種獨立的語言,如...
摘要:下面我們從前端基礎(chǔ)和底層原理開始講起。對于和這三個對應于矢量圖位圖和圖的渲染來說,給前端開發(fā)帶來了重武器,很多小游戲也因此蓬勃發(fā)展。這篇文章受眾之大,后來被人重新整理并發(fā)布為,其中還包括中文版。 showImg(https://segmentfault.com/img/bVbjM5r?w=1142&h=640); 想閱讀更多優(yōu)質(zhì)文章請猛戳GitHub博客,一年百來篇優(yōu)質(zhì)文章等著你! 這...
閱讀 875·2021-10-11 10:59
閱讀 2809·2019-08-30 15:43
閱讀 2140·2019-08-30 11:08
閱讀 1659·2019-08-29 15:20
閱讀 1025·2019-08-29 13:53
閱讀 497·2019-08-26 13:24
閱讀 1646·2019-08-26 13:24
閱讀 2831·2019-08-26 12:08