【學習筆記】JavaScript基礎(一)

【學習過程遇到疑問和延伸閱讀】

1.document.write()的深入理解
write()方法可向文檔寫入HTML表達式或JavaScript代碼。
可使用document.write()向輸出流寫文本或者HTML

延伸閱讀《js中document.write的那點事》
http://www.cnblogs.com/dh616854836/articles/2140349.html

?

2.編程語言與腳本語言的區別

概念的相對性:標記語言vs編程語言;編譯型語言vs解釋型語言(腳本語言)
而JavaScript是編程語言,是解釋型語言(腳本語言)。

延伸閱讀《編程語言,標記語言,腳本語言分別有哪些?區別是什么?》
http://www.cnblogs.com/lsgsanxiao/p/5126170.html

3.Sublime text配置JS運行環境,工具Tools->build- new build system
可以進行構建功能的配置,配置后就可以不離開編輯器直接編譯當前正在編寫的代碼,
并把打印輸出到輸出面板。
配置了Node(Node.js 是一個基于 Chrome V8 引擎的 JavaScript 運行環境 )后,
就可以用ctrl+B 運行JS文件了。

4.編譯型語言的程序源文件運行“四部曲”。
每個程序提交到計算機運行,都包含著如下所謂的“四步曲”:
(1)編輯(把程序代碼輸入,交給計算機)或編寫源代碼。
(2)編譯(成目標程序文件.obj)。編譯就是把高級語言變成計算機可以識別的2進制語言,
計算機只認識1和0,編譯程序把人們熟悉的語言換成2進制的。
編譯程序把一個源程序翻譯成目標程序的工作過程分為五個階段:詞法分析;語法分析;語義檢查和中間代碼生成;代碼優化;目標代碼生成。
主要是進行詞法分析和語法分析,又稱為源程序分析,分析過程中發現有語法錯誤,給出提示信息。
(3)鏈接(成可執行程序文件.exe)。
鏈接是將編譯產生的.obj文件和系統庫連接裝配成一個可以執行的程序。
由于在實際操作中可以直接點擊Build從源程序產生可執行程序,可能有人就會置疑:
為何要將源程序翻譯成可執行文件的過程分為編譯和鏈接兩個獨立的步驟,不是多此一舉嗎?
之所以這樣做,主要是因為:在一個較大的復雜項目中,有很多人共同完成一個項目(每個人可能承擔其中一部分模塊),
其中有的模塊可能是用匯編語言寫的,有的模塊可能是用VC寫的,有的模塊可能是用VB寫的,
有的模塊可能是購買(不是源程序模塊而是目標代碼)或已有的標準庫模塊,
因此,各類源程序都需要先各自編譯成目標程序文件(2進行機器指令代碼),再通過鏈接程序將這些目標程序文件連接裝配成可執行文件。
(4)運行(可執行程序文件)。
上述四個步驟中,其中第一步的編輯工作是最繁雜而又必須細致地由人工在計算機上來完成,
其余幾個步驟則相對簡單,基本上由計算機來自動完成。

5.程序流程圖
是程序分析中最基本,最重要的分析技術。最基本的工具。
通過結構清晰,邏輯性強的流程圖,能更好地理解程序執行的順序。程序流程圖是人們對解決問題的方法、思路或算法的一種描述。

延伸閱讀《編程基本功訓練:流程圖畫法及練習》
http://blog.csdn.net/sxhelijian/article/details/8222858

?

【新概念,重要概念】
編譯,編程語言,解釋型語言

?

【實操知識點脈絡】

1.什么是JavaScript
1.1JavaScript是什么
html內容,css樣式,JavaScript動作
程序可以計算,可以接受用戶交互,做數據處理,
可以被瀏覽器執行

Java與JavaScript的區別
Java需要編譯,JavaScript是解釋型語言

JavaScript源代碼放在HTML里頭,
讓瀏覽器運行

1.2頁面中JavaScript代碼
如何在頁面加入?
<script></script>
可以放在head(函數的定義,變量的定義)或者body(做實際的動作)里

JavaScript一條語句后必須以分號結尾
<script>document.write("Hello World!");</script>-document做write動作
document是對象(瀏覽器的頁面)
點.是運算符號
對象.動作(表示點左邊的對象做點右邊的動作)

需要write動作的參數,
參數是一句話,程序語言是用字符串,用雙引號引起來。

1.3桌面上的JavaScript
遠超過瀏覽器本身,除了可以在瀏覽器運行外,也可以在桌面端運行,
需要其他軟件的幫助。

Node.js下載
啟動Node,運行js示例文件的代碼,保存為server.js,文件里面的代碼,可以建立了Web服務器。
server.js所在的目錄的HTML文件,就可以通過瀏覽器訪問(js文件中的本機地址和端口號)

Sublime text中關于JavaScript的工具,
比如Syntax的高亮.


在下載安裝Node.js后,還不能在Sublime text中直接運行JavaScript,需要配置js的運行環境
需要去tools,build system,new system,
然后在文件中,輸入這么一段文字,在windows下
{
"cmd": ["node", "$file"],
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.javascript"
}
然后保存,名字為node.sublime-build
最終會在tools-build system下會有個node。

現在回到server.js中,在Tools-build system下選擇node之后,
按快捷鍵ctrl+B,編譯運行,然后server就啟動了
(在編譯時出現了錯誤提示, [WinError 2] 系統找不到指定的文件。
最終找出原因是server.js的目錄路徑下,有個目錄使用了中文命名,修改為英文后,編譯成功)

1.4事件響應代碼
另一種加入JS代碼的方式,
利用HTML的標記的事件(動作)屬性,
把JS代碼作為屬性值的方式。
如:body 的onLoad的載入事件屬性。
<body οnlοad="alert('hello!')">

1.5變量variable
當需要保存數據的時候,可以使用變量。
var hello = "Hello"; //等號是賦值運算,給變量一個初值;
document.write(hello);
<script>document.write("<h1>Hello World!</h1>");</script>

變量命名的規則:
數字,字母,下劃線_ 的組合,
數字不能作為第一個字符
不能使用JavaScript的關鍵字和保留字

變量是弱類型:變量無特定的類型,定義變量時只用var運算符。

可以將它初始化為任意值,也可以隨時改變變量所存數據的類型。

2.計算
2.1賦值運算
變量本身可以沒有類型
數值,字符串,布爾值
2.2字符串連接運算
2.3四則運算
%運算,取模,取除法結果里的余數,實際應用判斷奇偶數
圓括號
在JavaScript中,不太區分整數和浮點數
2.4加1,減1運算(推薦單獨使用)
result++;++result;

2.5比較
2.5.1數值比較
==
!=
<=
2.5.2字符串比較(跟字符在計算機里的排序有關)
==
>=
<=

3判斷

3.1

if(關系運算)

{
滿足條件的處理
}
瀏覽器先執行了js后,再解釋HTML。
document.write是把字符串寫到html

3.2else{}

3.3嵌套的if語句
多個else的情況下,else是與最近的if搭配起來

建議
-在if和else后面永遠放一對{}
-哪怕后面只有一句語句
if()
{ }
else if()
{ }
else
{}

3.4switch-case多路分支
每一個case要有break,否則不會跳出switch,
繼續往下面的case執行
實踐例子,百分制分數轉換為A-F的等級

3.5邏輯運算(true和false之間的運算)
運算符 && || !
真值表

3.6優先級
-所有的邏輯運算符的優先級都低于關系運算符
-!> && >||

3.7條件運算符(三元運算)
?:
<exp>?<v1>:<v2>
等價于
if(exp)
{ v1 }
else
{ v2 }

?

4循環
4.1while語句
讓同一段代碼可以重復執行很多次,這種程序結構
while(exp)
{
重復執行的代碼
}

在分析別人程序的時候,可以把值設小減少循環次數。
來理解程序的用意。

4.2循環的例子
例子:求最大公約數
描述算法:前置條件-一步步的步驟-終止條件

4.3無限循環
循環的條件永遠滿足,結果陷入在這個循環里面

4.4循環嵌套
外面的循環的每一步,里面的循環需要不滿足條件跳出,否則執行里面的循環。

4.5do-while循環
do{
}while(condition)

與while循環的區別:
首先進入循環體執行一次,而不先判斷條件。

例子:reverse number

?

4.6for循環
for(init;condition;step){
}
應用:計數循環
當循環的次數預先知道,或者需要有遞進的動作時,

往往選擇for循環。

for循環嵌套例子

4.7無限循環的寫法
while(true){}
do{}while(true)
for(;;){}

4.8不同循環的比較
-三種循環(while、do和for)的功能是等價的
-如果需要循環至少執行一次,do通常是更好的選擇
-當循環的次數是固定的,或者很容易計算得到的時候,選擇for循環

4.9如何選擇循環
-如果有固定次數,用for
-如果必須執行一次,用do-while
-其他情況用while

4.10break與continue
break:跳出循環
continue:跳過當前循環步,進入循環的下一輪
從流程圖可以清晰地看出區別來。

?

轉載于:https://www.cnblogs.com/iccy/p/6822724.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/372224.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/372224.shtml
英文地址,請注明出處:http://en.pswp.cn/news/372224.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

js操縱cookie技術

<% page language"java" import"java.util.*" pageEncoding"UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>圖片瀏覽</title> <script typ…

java none怎么用tomcat_使用tomcat做java中間件

tomcat是一個老牌的中間件了&#xff0c;從我從業到現在時不時都會遇到它&#xff0c;方便、靈活、性能一般是我對它的使用經驗總結。配置注意 &#xff1a; tomcat 7 和 6 有很大差別&#xff0c;server.xml catalina.sh 配置文件不能通用設置tomcat7 使用jdk1.7export JAVA_H…

早期訪問中帶有NetBeans的Oracle公共云Java服務

誰期望發生這種情況&#xff1a;Oracle正在開發公共云產品&#xff0c;并且即將開始正式啟動的跡象已經出現。 在正式宣布之后將近一年&#xff0c;我被邀請加入所謂的“搶先體驗”計劃&#xff0c;以試駕新服務并提供反饋。 多虧負責產品的經理Reza Shafii &#xff0c;我才可…

MySQL 分組之后如何統計記錄條數 gourp by 之后的 count()

SELECT count(*) FROM 表名 WHERE 條件 // 這樣查出來的是總記錄條SELECT count(*) FROM 表名 WHERE 條件 GROUP BY id //這樣統計的會是每組的記錄條數.如何獲得 第二個sql語句的總記錄條數? 則是&#xff0c;如下&#xff1a;    select count(*) from(SELECT count(*) F…

python CS游戲1--角色創建,武器購買

#codingutf-8 import random 本文字主要目的是隨機創建一個角色&#xff0c;并且武器是隨機產生的&#xff0c;自帶系統給的費用10000,10000元錢可以購買武器&#xff0c;購買武器以后&#xff0c;錢會減少&#xff0c;直到不足提示無法購買 dir{"AK47":2000,"…

App Engine中的Google Services身份驗證,第2部分

在本教程的第一部分中&#xff0c; 我描述了如何使用OAuth進行Google API服務的訪問/身份驗證。 不幸的是&#xff0c;正如我稍后發現的那樣&#xff0c;我使用的方法是OAuth 1.0&#xff0c;顯然現在Google正式棄用了OAuth 1.0&#xff0c;改用OAuth 2.0版本。 顯然&#xff0…

字符串常用操作

1 常用&#xff1a;分割、長度、索引、切片2 r (1,2,3,4,5)#只讀列表元組3 name "liangml"4 strip5 username input("user:")6 if username.strip() "liangml":#strip可以將輸入前后的空格都換掉7 print("welcome")8 9 split …

java 保存bufferedimage_java - 如何將BufferedImage保存為Fi

答案在于Java Documentation的編寫/保存圖像教程。SaveImage.java類提供以下保存圖像的方法&#xff1a;static boolean ImageIO.write(RenderedImage im, String formatName, File output) throws IOException該教程解釋了這一點BufferedImage類實現RenderedImage接口。所以它…

MarkDownPad2 注冊碼

注冊信息 郵箱地址&#xff1a; Soar360live.com 授權秘鑰&#xff1a;GBPduHjWfJU1mZqcPM3BikjYKF6xKhlKIys3i1MU2eJHqWGImDHzWdD6xhMNLGVpbP2M5SN6bnxn2kSE8qHqNY5QaaRxmO3YSMHxlv2EYpjdwLcPwfeTG7kUdnhKE0vVy4RidP6Y2wZ0q74f47fzsZo45JE2hfQBFi2O9Jldjp1mW8HUpTtLA2a5/sQytX…

[51nod1297]管理二叉樹

一個初始為空的二叉搜索樹T&#xff0c;以及1到N的一個排列P: {a1, a2, ..., aN}。我們向這個二叉搜索樹T添加這些數&#xff0c;從a1開始, 接下來是 a2, ...&#xff0c; 以aN結束。在每一個添加操作后&#xff0c;輸出T上每對節點之間的距離之和。例如&#xff1a;4 7 3 1 8 …

Java Swing中的聊天氣泡

本文將向您解釋“如何在Java swing應用程序中繪制聊天氣泡&#xff1f;” 聊天氣泡與呼出氣泡或思想氣泡相同。 今天&#xff0c;大多數聊天應用程序都以這種格式顯示轉換&#xff0c;因此本文將幫助您在用Java swing創建的桌面應用程序中進行相同的操作。 以下課程用于繪制第一…

java內存模型按照線程隔離性_深入理解Java多線程與并發框(第③篇)——Java內存模型與原子性、可見性、有序性...

一、Java內存模型Java Memory Modle&#xff0c;簡稱 JMM&#xff0c;中文名稱 Java內存模型&#xff0c;它是一個抽象的概念&#xff0c;用來描述或者規范訪問內存變量的方式。因為各中計算機的操作系統和硬件不同&#xff0c;方式機制也可能不同&#xff0c;Java內存模型用于…

PHP通過PDO連接Microsoft Access數據庫

1連接到access數據庫 $db new PDO("odbc:Driver{Microsoft Access Driver (*.mdb, *.accdb)}; dbq" .realpath("yourfilepath\# ddsbbn3A02.Mdb")) or die("Connect Error"); realpath函數用來規范化絕對路徑 2修改數據庫中BM_sitelink表中字段…

ZK實際應用:樣式和布局

在之前的ZK in Action帖子中&#xff0c;我們使用ZK MVVM實現了CRUD功能 。 我們還快速瀏覽了一些樣式代碼&#xff0c;可能需要更多的解釋。 在本文中&#xff0c;我們將討論如何在ZK小部件上附加新CSS樣式規則&#xff0c;以及如何覆蓋現有樣式。 我們還將介紹ZK中UI布局的一…

java面向對象的三大特征是6_Java面向對象的三大特征

面向對象的本質&#xff1a;以類的方式組織代碼&#xff0c;以對象的方式組織數據。面向對象三大特性&#xff1a;封裝 繼承 多態封裝&#xff1a;概念&#xff1a;隱藏對象內部的復雜性&#xff0c;只對外公開簡單的接口。便于外界調用&#xff0c;從而提高系統的可擴展性&…

Tornado(一)

Tornado 特點 Tornado是一個用Python寫的相對簡單的、不設障礙的Web服務器架構&#xff0c;用以處理上萬的同時的連接口&#xff0c;讓實時的Web服務通暢起來。雖然跟現在的一些用Python寫的Web架構相似&#xff0c;比如Django&#xff0c;但Tornado更注重速度&#xff0c;能夠…

Android下Opengl ES實現單屏幕雙眼顯示

http://blog.csdn.net/u011371324/article/details/68946779 默認情況下&#xff0c;Opengl ES使用系統提供的幀緩沖區作為繪圖表面&#xff0c;一般情況下&#xff0c;如果只在屏幕的表面繪圖的話&#xff0c;系統提供的默認幀緩沖區很高效&#xff0c;但是很多應用程序需要渲…

Oracle Service Bus –線程阻塞案例研究

本案例研究描述了在AIX 6.1和IBM Java VM 1.6上運行的Oracle Service Bus 11g遇到的線程阻塞問題的完整根本原因分析過程。 本文也是您提高線程轉儲分析技能的絕佳機會&#xff0c;我強烈建議您學習并正確理解以下分析方法。 與過早的中間件&#xff08;Weblogic&#xff09;重…

java 可以重載等于號碼_Java面試之Java基礎4——重載與重寫的區別

目錄重載與重寫的概念重載與重寫的區別重載與重寫的總結構造器是否能被重寫override為什么函數不能根據返回類型來區分重載重載與重寫的概念重載&#xff1a;同樣一個方法可以根據輸入參數列表的不同&#xff0c;做出不同的處理。普通方法和構造器方法都能夠重載。方法重載&…

二維數組、多維數組

二維數組&#xff1a; 定義二維數組 int[,] myArray new int[幾個一維數組,數組中的個數]; 數組可以具有多個維度。例如&#xff0c;下列聲明創建一個四行兩列的二維數組(可以理解為4個1維數組&#xff0c;數組中包含2個元素)&#xff1a; int[,] myArray new int[4,2]; int[…