一、常用的除錯語句
方法 | 說明 | 示例 | 歸屬 |
---|---|---|---|
alert(msg); | 警告,在瀏覽器中彈出一個警告框,內容為alert裡面的內容 | alert("Surprise"); | 瀏覽器 |
closole.log(msg); | 控制檯,在控制檯內輸出一些內容 | console.log("Surprise"); | 瀏覽器 |
prompt(問題,值); | 對話方塊,第一個引數是詢問內容,第二個引數是提示攤入的例項值 | prompt("你的年齡是",18); | 瀏覽器 |
二、變數與常量
(1)變數
變數命名規範
1、由字母(A-Za-z)、數字(0-9)、下劃線(_)、美元符號( $ )組成,
2、嚴格區分大小寫。
3、不能 以數字開頭。
4、不能 是關鍵字、保留字。
5、變數名必須有意義。
6、遵守駝峰命名法。首字母小寫,後面單詞的首字母需要大寫。
變數命名
// 關鍵字 var
var 變數名=變數值;
var name = "xiao";
// es6新語法
let 變數名=變數值;
let name = "xiao";
- 如果編譯器版本是 5.1 則無法使用let
- 如果是6.0 則向下相容,二者都可以
var和let的區別
- var 在迴圈內定義也會影響到全域性
- let 在區域性定義只會在區域性生效
變數賦值
- 定義完變數後,初始沒有進行賦值,內部會有一個預設的儲存值叫做 undefined
var name;
console.log(name); // undefined
- 變數賦值透過 = 賦值 等號左邊是變數名 右邊是變數值
var name="xiao";
- 書寫時習慣在等於號兩邊各加一個空格
- 變數可以在定義時直接賦值
- 變數可以賦值給另一個變數,只是把變數的值賦值給另一個變數
- 變數可以多次賦值
- 多個變數可以同時宣告中間用,號分隔
var name="xiao",age=18;
(2)常量
-
在Python中沒有真正意義上的常量,預設全大寫就是常量
-
在js中有真正意義上的常量
const pi=x;
const關鍵字是用來宣告一個只讀的變數,一旦宣告,常量的值就不能改變
const i =10;
var i =11;
// VM296:1 Uncaught SyntaxError: Identifier 'i' has already been declared
ps : js也是一門物件導向的程式語言,一切皆物件
三、資料型別
(1)概述
在JavaScript中,資料型別可以分為以下幾種:
-
基本資料型別(Primitive Data Types):
- String(字串):表示文字資料,用引號(單引號或雙引號)括起來。
- Number(數字):表示數值,可以是整數或浮點數。
- Boolean(布林值):表示邏輯值,只有兩個值:
true
(真)和false
(假)。 - Null(空值):表示空值或不存在的值。
- Undefined(未定義):表示未定義的值。
- Symbol(符號):表示唯一的、不可變的值,通常用於物件屬性的識別符號。
-
複雜資料型別(Complex Data Types):
- Object(物件):表示複合值,可以包含多個屬性。
-
特殊資料型別:
- Function(函式):函式也是物件,但由於其具有可呼叫行為,因此通常被視為一種特殊的資料型別。
在JavaScript中,使用typeof
運算子可以用來檢測資料型別,例如:
typeof "Hello" // "string"
typeof 42 // "number"
typeof true // "boolean"
typeof undefined // "undefined"
typeof null // "object" (這是 JavaScript 中的一個歷史遺留問題)
typeof {} // "object"
typeof function() {} // "function"
(2)數值型別(number)
演示
var a = 11;
var b = 11.11;
// 如何檢視當前資料型別
typeof a;
注意
- 特殊的 NaN :數值型別
- 表示的意思是不是一個數字, Not A Number
- NaN===NaN 這個與所有的值都不會相等,包括自己
- 只能通 isNaN(NaN) 來判斷
型別轉換
var a = parseInt("11.11");
var b = parseFloat("11");
console.log(e);
// 11
console.log(f);
// 11
console.log(typeof(e));
// number
console.log(typeof(f));
// number
- parseInt方法:只要開頭有數字就可以轉,如果開頭不是數字則是NoN
- parseFloat方法:只要開頭有數字就可以轉,如果開頭不是數字則是NoN
(3)字串型別(string)
演示
var s = 'xiao'
typeof s
'string'
var s1 = "xiao"
typeof s1
'string'
var s2 = '''xiao''' //不支援三引號
VM457:1 Uncaught SyntaxError: Unexpected string
模版字串(重點)
- 書寫多行字串
var s3 = `
adfcsac
csacaf
asfada
`
typeof s3
'string'
- 模版字串除了可以定義多行文字之外還可以實現格式化字串操作
- 書寫
${}
會自動去前面找大括號裡面的變數名對應的值,如果沒有定義會直接報錯
- 書寫
var name = 'xiao'
var age = 18
var sss = `
my name is ${name} and my age is ${age}
`
sss
'\nmy name is xiao and my age is 18\n'
var s4 = `my name is ${fneowanfo}`
VM755:1 Uncaught ReferenceError: fneowanfo is not defined
at <anonymous>:1:24
字串的拼接
- 在python中不推薦你使用+做拼接,而是使用join
- 在js中推薦你直接使用+做拼接
字串型別常用方法
方法 | 說明 | 對比python |
---|---|---|
.length | 返回長度 | len() |
.trim() | 移除空白 | strip() |
.trimLeft() | 移除左邊的空白 | lstrip() |
.trimRight() | 移除右邊的空白 | rstrip() |
.charAt(n) | 返回第n個字元 | |
.concat(value,...) | 拼接 | join() |
.indexOf(substring,start) | 子序列位置 | |
.substring(from,to) | 根據索引獲取子序列 | []索引取值 |
.slice(start,end) | 切片 | |
.toLowerCase() | 小寫 | lower() |
.toUpperCase() | 大寫 | upper() |
.split(delimiter,limit) | 分割 | split() |
示例
var name = 'quanhaodsb'
name.length
// 10
var name1 = ' quanhaodsb '
name1
// ' quanhaodsb '
name1.trim()
// 'quanhaodsb'
name1.trimLeft()
// 'quanhaodsb '
name1.trimRight()
// ' quanhaodsb'
var name2 = '$$xiao$'
name2.trim('$') // 不能加括號指定去除的內容
// '$$xiao$'
name2.charAt(2)
// 'x'
name2.indexOf('ia')
// 3
name2.substring(0,5)
// '$$xia'
name2.slice(0,5)
// '$$xia'
name2.substring(0,-1) //不識別負數
// ''
name2.slice(0,-1) //後面推薦就使用slice就可以
// '$$xiao'
var name3 = 'QuanHaoDsB123HahA'
name3.toLocaleLowerCase()
// 'quanhaodsb123haha'
name3.toLocaleUpperCase()
// 'QUANHAODSB123HAHA'
var name4 = 'xiao|run|swim|sing|...'
name4.split('|')
// (5) ['xiao', 'run', 'swim', 'sing', '...']
name4.split('|',2)
// (2) ['xiao', 'run']
name4.split('|',10) //第二個引數不是限制切割字元的個數而是獲取切割之後元素的個數
// (5) ['xiao', 'run', 'swim', 'sing', '...']
name4.concat(name,name1)
// 'xiao|run|swim|sing|...quanhaodsb quanhaodsb '
var p = 111
name4.concat(p) // js是弱型別,內部會自動轉換成相同的資料型別做操作
// 'xiao|run|swim|sing|...111'
python 是強型別,資料型別必須一致
l = [1,2,3,4,5,6]
res = '|'.join(l) // 直接報錯
print(res)
(4)布林值
(1)與python比較
-
在python中布林值是首字母大寫的
-
True
-
False
-
-
但是在js中布林值是全小寫的
-
true
-
flase
-
(2)布林值是false的有哪些
- 空字串
- 0
- null
- undefined
- NaN
除了上述為 false 的情況,其他情況均為 true
(5)null與undefined
- null表示值為空,一般都是指定或者清空一個變數時使用
- name = null
- undefined表示宣告瞭一個變數,但是沒有做初始化操作(沒有給值)