學習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
-
變數宣告
var a ;
var b , c; -
初始化
a = 3;
b = true; -
變數宣告的提升
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
- 將其他資料型別轉換為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的主要處理工具。 傳統的機器學習技術,需要人為地去做特徵工程,將這些的特徵餵給機器學期演算法;然後機器學習演