JS基礎數據類型
# 圖片太多,詳細見link 以及文本
一、每日面試(知識復習)
1、問:執行完下面的代碼後, l,m的內容分別是什麽?
def func(m):
for k,v in m.items():
m[k+2] = v+2
m = {1: 2, 3: 4}
l = m # 淺拷貝
l[9] = 10
func(l)
m[7] = 8
print("l:", l)
print("m:", m)
# 報錯:dictionary changed size during iteration
# (python3.6)在叠代一個列表或字典的時候,你不能修改列表或字典的大小
2、= 、 切片 、copy 、deepcopy
import copy
list1 = [11, 22, [33, 44]]
list2 = list1
list3 = list1[:]
list4 = copy.copy(list1)
list5 = copy.deepcopy(list1)
list1[2].append(55)
print("list2:",list2) # [11, 22, [33, 44, 55]]
print("list3:",list3) # [11, 22, [33, 44, 55]]
print("list4:",list4) # [11, 22, [33, 44, 55]]
print("list5:",list5) # [11, 22, [33, 44]]
print(id(list1)) # 4363819976
print(id(list2)) # 4363819976
print(id(list3)) # 4363820104
print(id(list4)) # 4363820040
print(id(list5)) # 4363834760
# 前幾種是拷貝了一個連接地址,原列表改變後,這幾種列表中的值根據連接取值,相應都作出變化。後一種(深拷貝)是開始就自建了一個空間,原列表中的值改變,其不跟著變化。
3、註釋(規範化)
1、# TODO:在傳git前會提示(這裏沒有考慮到)
2、行內註釋balabala # balabala
3、單行註釋# balabala
4、多行註釋‘‘‘ ‘‘‘
5、函數、類內部註釋
def foo(name, age):
"""
這個函數是幹什麽用的?
:param name: 用戶名,必須是字符串類型
:param age:
:return: None
"""
print(name)
print(age)
4、join連接列表的元素(只能連接字符串)
list_tmp = [11, 22, 33, 44]
list_tmp2 = ["Alex", "DSB", "hehe", "haha"]
ret1= "".join(list_tmp2)
ret2= ",".join([str(i) for i in list_tmp])
print(ret1) # AlexDSBhehehaha
print(ret2) # 11,22,33,44
5、python中的三元表達式(三元運算)
# 如果n > m,我就把n的值賦值給x,否則就把m的值賦值給x
n = 10
m = 5
x = n if n > m else m
print(x) # 10
二、今日內容
Blog鏈接:https://www.cnblogs.com/liwenzhou/p/8004649.html
1. JavaScript是什麽?
一門輕量級的編程語言;運行在瀏覽器上的腳本語言。
node.js 可以寫後端。
2. JavaScript都學哪些內容?
1. 語法基礎
2. BOM(document object model文檔對象模型)--> 用JS代碼操作瀏覽器
3. DOM (browser object model瀏覽器對象模型)--> 用JS代碼操作HTML文檔
3. JavaScript的運行方式?
1. 導入方式:
1. 在HTML文件中寫一個script標簽,在script標簽中直接寫JS代碼
2. 將JS代碼寫在一個單獨的JS文件中,然後通過script標簽的src屬性導入
2. 可以直接在瀏覽器的console窗口直接運行JS代碼
3. node.js 運行JS文件 *(現在了解即可)
4. JavaScript學什麽?
0. 語法規則
1. 單行註釋 //
2. 多行註釋 /* 多行註釋*/
3. 結束符 ;
1. 變量
1. 變量名:可以使用_,數字,字母,$組成,不能以數字開頭
1. 變量名是區分大小寫的。
2. 推薦使用駝峰式命名規則。
3. 保留字不能用做變量名。
2. 聲明變量
1. var
2. let(ES6新增):所聲明的變量只在let命令所在的代碼塊內有效。
例如:for循環的計數器就很適合使用let命令。
3. const(ES6新增):用來聲明常量。一旦聲明,其值就不能改變。
2. 數據類型
1. 字符串
字符串的常用屬性和方法
# substring不支持負數,slice支持負數,一般用slice切片
Substring(0,-2) -> substring(-2,0)->substring(0,0)->’’
# shift + enter 換行
· ·(反引號)在ES6中不報錯; 若·· ·報錯,按上述設置成ES6 或在js文件開頭加一行:
/* jshint esversion: 6 */
ES6中引入了模板字符串。模板字符串(template string)是增強版的字符串,用反引號(`)標識。它可以當做普通字符串使用,也可以用來定義多行字符串,或者在字符串中嵌入變量。
2. 數值
1. JS中不區分整型和浮點型,都叫數值類型
2. NaN表示一個值不是數值(是數值類型,但表示不是一個數字not a number;當字符串轉成數字時,可能會出現NaN)
3. 將字符串類型的數據轉換成數值
parseInt("100")
parseFloat("11.11")
3. 布爾值(""(空字符串)、0、null、undefined、NaN都是false)
true false
4. Null
手動將變量的值清空的時候name=null
5. Undefined
變量光聲明但是沒有賦值的時候; 函數無明確返回值時
6. Object(JavaScript 中的所有事物都是對象:字符串、數值、數組、函數...此外,JavaScript 允許自定義對象)對象時帶有屬性和方法的特殊數據類型
1. 數組
TODO: sort()排序 (詳情見明日課程)
2. 數組的內置屬性和方法
# sort將數組中的元算轉成字符串,然後一位一位的對比排序
Console.log() 相當於print()
判斷一個變量的類型:
typeofnull --> object
typeof [11,22] --> Object
typeof undefined --> undefined
# typeof是一個一元運算符(就像++,--,!,- 等一元運算符),不是一個函數,也不是一個語句。
3. 運算符
1. 算術運算符
% 取余
2. 邏輯運算符
3. 比較運算符
1. 弱等於 "5" == 5 --> true
2. 強等於 "5" === 5 --> false
4. 賦值運算符
4. 控制語句
1. if ... else ...
2. if ... else if ... else ...
3. switch () {
case 1:
...
break;
}
# switch主要用於一個變量一個值的比較情況下
#一定要加break,否則程序會繼續執行後續case中的語句
4. for
5. while
6. 三元運算
5. 函數
1. 函數的定義
1. 普通函數
2. 帶參數的函數
3. 帶返回值的函數
# 如果return後跟多個值,返回最後一個
4. 匿名函數
5. 自執行函數(立刻執行函數)
6. 箭頭函數
# 如果箭頭函數不需要參數,或需要多個參數,用()代表參數部分
2. JS函數的坑
1. 默認的返回值是undefined
2. 調用函數時傳參隨意
3. 只能有一個返回值
3、 函數內置的arguments對象
4、練習題
JS基礎數據類型