1. 程式人生 > >學習js的課堂筆記(一)---基礎

學習js的課堂筆記(一)---基礎

一、程式語言
c語言
是一種編譯語言
hello.c無法直接執行在作業系統上
編寫-> 編譯 ->執行(直接執行在作業系統上)

Java語言(跨平臺)
	編寫-> 編譯 ->執行(執行在jvm)

js語言(nodeJS)
	解釋性語言
	弱型別語言
	編寫 -> 執行

二、快速入門
1、js組成
IE ----- ies
firefox ----- ffs
google chrome ----- gcs
opera
safari

	ECMAScript (ECMA)
		js語法標準
			變數
			資料型別
			關鍵字
			操作符
			語句(流程,迴圈)
			陣列
			面向物件

			js開發者
			js解析者
	DOM (jquery)
		文件物件模型
		js語法標準開發出來的操作元素的js庫
		var dom = document.getElementById()
		dom.onclick()
	BOM
		瀏覽器物件模式
		window.alert();
		confirm()
		prompt()
		setInterval()
		setTimeout()

2、第一個js例子:hello.js
var str = “hello”;
console.log(str);

	$ node hello.js

3、js註釋
// 單行註釋
/**/多行註釋
1:1

	html註釋 <!---->
	css註釋	/**/

4、 關鍵字和保留字
var str = “hello”
var, if, else, while, do, switch,…

5、變數
可以變化的量
js中的變數是弱型別的。變數的資料型別只有在初始化的時候才能被確定
1) 弱型別
var a ; //undefined
a = 3; //number
a = true //boolean
a = “19” //string
a = null //null

  1. 變數宣告
    var a ;
    var b , c;

  2. 初始化
    a = 3;
    b = true;

  3. 變數宣告的提升
    console.log(e); //undefined
    var e = 3;

     	->
     	var e;	(宣告提升)
     	console.log(e);
     	e = 3;
    

5)變數的資料型別
①基本資料型別(5種)
1.1 string
“true” ‘1’
“hello"11"world”
" ’ \t \n
1.2 number
1 1.1
NaN (not a number)
isNaN(變數)
如果變數為NaN,那麼返回true
Infinity
var a = 1/0;
無限大
isFinite(變數)
如果變數正常,返回true
1.3 boolean
true / false
1.4 undefined
未初始化
以undefined來初始化
1.5 null
以null來初始化

				function createPerson(name,age){
					var person = null;
					if(name && age){
						person = new Object();
						person.name = name;
						person.age = age;
					}
					return person;
				}

				var p = createPerson("terry",22);
				if(p == null){
					console.log("未初始化");
				} else {
					console.log(p.name);
				}

			if(typeof a == 'boolean') {

			}

判斷變數所屬資料型別
typeof 變數名

②引用資料型別
除了基本資料型別之外所有的其他資料型別都為引用資料型別

三、JS中的操作符
1) 算術運算子 (Number)
+ +=
- -=
* *=
/ /=
% %=

	5%2 = 1
	var a = 3;
	a+=3

	//a = a+3;
2) 一元運算子
	++
		前置,先自增再參與其他運算
			var a = 3;
			var b = ++a + 1;
		後置,先參與其他運算再自增
			var a = 3;
			var b = (a++)+1;
	--
		與++類似
	+
		var a = 3;
		+a;
		var a = 'a';
		+a;	
		將其他型別轉化為Number型別
	-
		var a = 3;
		-a 		// -3
		var a = 'a''
		-a
		將其他型別轉換為Number型別,再加-
		+a
		-(-a)
3) 比較運算子 (boolean)
	== 		比較值
	===		先比較資料型別再比較值
		null == undefined 	//true undefined派生自null
		null === undefined 	//false

		'12' == 12 	//true
		'12' === 12	//false
	!=
	!==
	>
	<
	>=
	<=
4) 邏輯運算子(短路運算子) (boolean)
	&& 並且
		同真則真,有假則假
		exp1 && exp2
		exp1,exp2可以為boolean也可以為其他資料型別,如果為其他資料型別在運算前先轉換為boolean在進行運算

		exp2 = true
		exp1 = false
		如何證明?

	||
		有真則真,同假才假

		var a = 3;
		var b ;

		var input = '19';

	!
		var a = true
		!a 		//false
		var a = 'hello';
		!a 		//false

		快速將其他型別轉換為布林型別的方法
		!!a

5) 三目運算子
	? : 
	boolean_exp ? exp1 : exp2;
	var xb = gender == 1 ? '男' : '女'; 
	var a = day==1?'週一':day==2?'週二':'週三'

	<div id="main">	
		姓名<div>{{name}}</div>
		性別<div>{{gender==1?"男":"女"}}</div>
	</div>

	<script>
		export default {
			data(){
				return {
					name:'terry',
					gender:1
				}
			},
			methods:{
				sayName:function(){

				}
			}
		}
	</script>
6) 位運算子

四、基本資料型別的型別轉換
1) 將其他資料型別轉換為Number
轉換
+a
-(-a)
Number(a)
true 1
false 0
undefined NaN
解析
parseInt() 解析為整數
parseFloat() 解析為小數
true NaN
false NaN
undefined NaN
2) 將其他資料型別轉換為Boolean
!!a
Boolean(a)
number
非0/Infinity true
0/NaN false
string
非空字串 true
空字串 false
null false
undefined false

  1. 將其他資料型別轉換為String
    var a = true;
    a = a+’’

五、流程控制語句
1) if語句
if(exp){
//…
}
當exp為真,才可以執行大括號中的內容
當exp不為boolean的時候,先轉換為boolean型別

2) if-else 
	if(condition) {
		exp1
	} else {
		exp2
	}
	當condition為真,執行exp1,否則執行exp2
3) if-else if - else
	if(condition1){
		exp1
	} else if (condition2) {
		exp2
	} else {
		exp3
	}

4) switch
	var day = "3";
	switch(day){
		case 1:

			break;
		case 2:

			break
		case 3:

			break;
		default:
			...
	}
	1. 變數與常量比較的時候使用===
	2. 在case程式碼塊不可以省略break;不然程式碼會直接向下執行直到遇到break或者程式碼結束
	3. default的位置可以不在最後,當在其他位置上時,break不能省略

六、 迴圈語句
要素
初始化條件
結束條件
迭代

1) for迴圈
	for(初始化條件; 結束條件; 迭代) {
		//迴圈體
	}
	
	初始化條件執行1次
	結束條件執行 n+1次
	迭代 n次

	1 + 2 + 3 + ... + 100
	(1+100)*50
2) do-while

	var i = 10;
	var total = 1;
	do {
		total *=i;
		i--;
	} while(i>0);

3) while
	var i = 10;
	var total = 1;
	while(i>0){
		total *= i;
		i--;
	}

	10

4) for-in (增強for迴圈)
	主要用於遍歷陣列或者物件
	var arr = ["terry","larry",true,12];
	for(var i in arr){
		console.log(i);
	}

七、物件
引用資料型別
複雜的資料結構,類似於C語言中的結構體,用於儲存多個值。
1) 建立
1. 通過建構函式(根 Object)
Object是一個建構函式,所有的子建構函式都繼承自Object

		var obj; //建立一個東西
		obj = new Object();	//引用
		obj.name = 'terry';
		obj.age =22;
		obj.gender = true;
		
		var a ;
		a = 12;	//基本
		
	2. 使用物件字面量

		var obj = {
			name:'terry',
			age:12,
			gender:true,
			firends:null
		};
		屬性名與屬性值通過:隔開,屬性與屬性之間通過,隔開。屬性名可以不加引號。當屬性名出現特殊字元,需要加引號。 屬性可以動態新增刪除

2) 物件屬性的訪問
		var obj = {name:'terry',age:12};
	obj.屬性名
		obj.name

	obj[屬性名]
		obj['name']
		=>
		var a = 'name';
		obj[a]

	屬性刪除
		delete obj.key

3) 引用拷貝,值拷貝
		var obj1 = {name:'terry',age:12};
		var obj2 = obj1;
		obj2.age++;

		obj1.age 	13
		obj2.age 	13

		var a = 1;
		var b = a;
		b++;

		a 	1
		b 	2
4) 檢測
	in

	var obj = {name:"terry",age:12};
	'name' in obj

	user

	if('gender' in user){
		console.log(user.gender);
	} else {
		console.log('性別未初始化');
	}

	console.log(user.gender);

5) Object(拓展)

	var obj = new Object();
	=>
	var obj = {};

	Object是一個建構函式 			人類
	obj2建構函式產生的例項 			李老師

	Object
		toString()	物件轉換為字串
		valueOf() 	物件轉換為number

	obj1 obj2 obj3
       由於obj1是Object的例項,所以obj1可以呼叫Object中的方法。
  obj2,obj3也同樣可以。因為他們都屬於Object的例項

相關推薦

學習js課堂筆記---基礎

一、程式語言 c語言 是一種編譯語言 hello.c無法直接執行在作業系統上 編寫-> 編譯 ->執行(直接執行在作業系統上) Java語言(跨平臺) 編寫-> 編譯 ->執行(執行在jvm) js語言(nodeJS) 解釋性語言

c 語言學習筆記基礎

lac alert https 內容 con 標記 prime c++ prime c基礎 近期工作上有對C語言算法上的需求,所以要學C,上學的時候沒學過,只學過半年的Java(我是專升本,本科學的材料),2015年工作後也學過C,那時候的需求是能看懂就可以,也就沒深入研究

ng機器學習視頻筆記——線性回歸、代價函數、梯度下降基礎

info 而且 wid esc 二維 radi pan 圖形 clas ng機器學習視頻筆記(一) ——線性回歸、代價函數、梯度下降基礎 (轉載請附上本文鏈接——linhxx) 一、線性回歸 線性回歸是監督學習中的重要算法,其主要目的在於用一個函數表

學習ES6的課堂筆記

2018.10.08 星期一 總的前端內容: 1.頁面重構 1)axure 2)html 3)css 4)js基礎 2.dom框架 1)dom/bom 2) jQuery 3)bootstrap 4)H5 API(H5新增標籤) 3.企業級開發(前端核心) 1)mvvm框架

FreeRTOS學習筆記基礎

我的FreeRTOS學習,是從朱工的FreeRTOS系列部落格開始的,感謝朱工的悉心整理,文章很不錯,適合學習。 根據朱工的部落格,按照我自己的習慣和思路,把最關鍵的資訊抓取下來,以備快速理清思路。 具體展開和豐富,需要移步朱工的文章,或者參考官方網站的資料。 1. 什麼是Fre

PHP學習筆記--基礎知識

1、編譯器中出現中文亂碼 如果編輯環境中輸入的中文程式設計亂碼,可以在“Edit”à”Set Encoding”,設定編碼為“GBK”,如下: 如果執行輸出視窗中文為亂碼,則可以右擊工程檔案,”Properties’à”PHP Debug”à”Encoding Setting”,設定為

【Redis學習】Redis筆記——特點、基礎命令和資料結構

更新時間:2018-10-13 Redis的特性 速度快 持久化(斷電不丟資料) 多種資料結構 支援多種客戶端語言 功能豐富 操作簡單 主從複製 高可用,分散式 Redis的通用命令 key

FreeRTOS學習筆記——基礎知識體系

文章目錄 一、 單任務系統(裸機) 二、多工系統(帶OS) 1. 任務堆疊 1.1 任務棧大小確定 1.2 棧溢位檢測機制 2. 任務狀態 3. 任務優先順序 3.1任

Typescript學習筆記基礎型別

為了面向ng2和前端未來,開始搞向ts,ts是微軟出的一枚語言,作為es6的超集,他出的一些特性還是蠻好用的(略坑)。對於我等純前端(從開始就接觸javascript)的人來說,真想說,這特麼什麼鬼。部分特性同es6(個人對es6還是蠻有好感的)。ts同期的coffeescript,將js pyth

資料結構學習筆記基礎概念

1、資料(Data)和      資料是外部世界資訊的載體,是描述客觀事物的符號,它能夠被計算機識別、儲存和加工處理,是計算機程式加工的原料。計算機程式處理各種各樣的資料,可以是數值資料,如整數、實數或複數;也可以是非數值資料,如字元、文字、圖形、影象、聲音等。 2、

組合語言學習筆記-----基礎知識

一、組合語言組成    組合語言由以下三類組成    1)彙編指令:機器碼的助記符,有對應的機器碼;    2)偽指令:沒有對應的機器碼,有編譯器執行,計算機並不執行    3)其他符號:如:+、-、*、/等,由編譯器識別,沒有對應的機器碼。二、儲存器:    CPU從記憶體

unity shader學習筆記——基礎光照之標準光照模型定義

標準光照模型 標準光照模型只關心直接光照(direct light)。它把進入攝像機的光照分為4個部分: 自發光(emissive),這部分用於給定一個方向時,物體表面會向這個方向產生多少的光,當沒有使用全域性光照時,自發光物體不會照亮周圍物體,只是本身看

VUE學習筆記基礎

常用指令 v-model:雙向資料繫結 <div id="app"> 輸入您的姓名: <input type="text" v-model="name"> <p>{{ $data | json

HBase學習筆記——基礎入門

1、what:什麼是HBase HBase的原型是Google的BigTable論文,受到了該論文思想的啟發,目前作為Hadoop的子專案來開發維護,用於支援結構化的資料儲存。 HBase是一個高可靠性、高效能、面向列、可伸縮的分散式儲存系統,利用HBASE技術可在廉價PC Server上搭建起大規模結構化儲

Django重新開始學習--環境搭建 筆記

nbsp url對應 tin art admin set pla base default 環境 :   python2.7   django 1.9.8   使用工具pycharm   Mysql =====================================

朗科學習期間心得筆記

網絡運維基礎(一)1.完整的操作系統由內核(kernel)和應用(application)組成。 linux內核版本由 主版本號+此版本號+小改動(註:在2.X的版本奇數代表測試版偶數代表穩定版) 可在 http://www.kernel.org 此網站內獲取內核源代碼。內核的主要功能有:驅動硬件、資源

Linux系統維護筆記基礎資訊檢視

位數 getconf LONG_BIT 閘道器 cat /etc/sysconfig/network DNS cat /etc/resolv.conf 硬碟 df -h 檢視Linux所有版本資訊    lsb_release -a 修改分

《機器學習實戰》 筆記:K-近鄰演算法

一、K-近鄰演算法 1.1 k-近鄰演算法簡介 簡單的說,K-近鄰演算法採用測量不同特徵值之間的距離的方法進行分類。 1.2 原理 存在一個樣本資料集合,也稱作訓練樣本集,並且樣本集中每個資料都存在標籤,即我們知道樣本集中每一資料 與所屬分類的對應關係。輸入沒有標籤的新資料

RxJava學習並理解筆記

作為菜鳥來講,看了好多的rxjava操作符,弄得我怕怕的,就怕自己堅持不住學習,所以,還是一步步來學習它吧,文章主要是記錄一下我學習rxjava的過程。 重點:rxjava的觀察者模式 程式中基於使用者的操作,資料的改變等因素,UI都會發生相應的變化 rxjava是一種非同步變化思想

斯坦福CS224N_自然語言處理NLP深度學習DL課程筆記

Lecture 1: Introduction pdf 本節課是對自然語言處理的定義介紹和應用介紹,還順帶說了NLP的難點; 本節課使用深度學習作為NLP的主要處理工具。 傳統的機器學習技術,需要人為地去做特徵工程,將這些的特徵餵給機器學期演算法;然後機器學習演