1. 程式人生 > >JS基礎數據類型

JS基礎數據類型

undefine subst class 需要 log 以及 內置 出現 substring

# 圖片太多,詳細見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)

4join連接列表的元素(只能連接字符串)

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

5python中的三元表達式(三元運算)

# 如果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. BOMdocument 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. letES6新增):所聲明的變量只在let命令所在的代碼塊內有效。

例如:for循環的計數器就很適合使用let命令。

3. constES6新增):用來聲明常量。一旦聲明,其值就不能改變。

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. 布爾值(""(空字符串)0nullundefinedNaN都是false)

true false

4. Null

手動將變量的值清空的時候name=null

5. Undefined

變量光聲明但是沒有賦值的時候; 函數無明確返回值時

6. ObjectJavaScript 中的所有事物都是對象:字符串、數值、數組、函數...此外,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基礎數據類型