Open joephon opened 4 years ago
变量是有名字的容器,容器用于存储数据,通过容器名字获取容器内的数据
JS 定义变量,需要一个关键字、一个操作符、一个变量名和要存储的数据
JS
var let const
var
let
const
=
var a = 20 let b = "20" const c = [20, "20"]
let 和 const 被设计来取代 var
三者的区别见 『♣️ A』
= 赋值操作符
var a = 20
+ - * / 无异于日常数学运算符
+
-
*
/
但是 = 在 JS 里是赋值,不是 等于
等于
JS 里的 等于 是一种 布尔运算
布尔运算
如: == 、 ===
==
===
在 JS 里,数据的类型可以是 数字、字符串
数字
字符串
Number String
Number
String
var num = 2
其中 2 是数字类型
2
Number 即 阿拉伯数字
阿拉伯数字
var str = "2" var str2 = '2' var str3 = '晓程序公开课' var str4 = ' + num + ' // str4 = '2' var str5 = `"${num}"` // str5 = "2"
其中 "2"、'2'、'晓程序公开课' 都是字符串类型
"2"
'2'
'晓程序公开课'
String 被单引号 或 双引号 包裹起来的字符
单引号
双引号
str4 和 str5 是两种常见的字符串拼凑方式
str4
str5
在 JS 里,数据的类型还可以是 数组、对象
数组
对象
Array Object
Array
Object
var arr = [1, 2, 3, 4] var arr2 = [1, "晓程序公开课", arr, [1, 2], {x: 1}]
其中 [...] 由一对中括号包裹起来的都是数组类型
[...]
Array 数组的每一项可以是任意数据类型,以 , 分隔,
,
var obj = { x: 1, y: 2} var obj2 = { x: 1, y: "晓程序公开课", z: [1, 2, 3] } var obj3 = { arr, obj } // obj3 = { // arr: [1, 2, 3, 4], // obj: { x: 1, y: 2}, // }
其中 {...} 由一对花括号包裹起来的都是对象类型
{...}
Object 以 键值对 的方式呈现 x: 1 即 key: value 每一对以 , 分隔
键值对
x: 1
key: value
函数、类 也是一种对象 function class
函数
类
function
class
分别申明类型为 Number String Array Object 的 4 个变量
var num = 2017
var str = "晓程序公开课"
var arr = [num, str]
var obj = { x: num, y: str, z: arr }
掌握了四大基本数据类型,便可以根据实际需求为数据选择一种最恰当的存储方式
在 JS 里,除了 Number String Array Object 四大基本类型
还有 Boolean null undefined
Boolean
null
undefined
其中 Boolean 为布尔类型,存在两种值 true 和 false
true
false
null 的值是 null 表示不存在
undefined 的值是 undefined 表示未定义
var yes = true var no = false
其中变量 yes 和变量 no 都是 Boolean 布尔类型
yes
no
var none = null var unset = undefined
其中变量 none 是 null 类型
none
变量 unset 是 undefined 类型
unset
true false null undefined 属于 JS 的关键字,这类特殊字符可以在在声明变量的时候可以直接用
JS 的数据类型有 Number String Array Object Boolean null 和 undefined
每一种数据类型,都有独特的操作方式
// 声明 var num = 1 var num2 = 2 var num3 = num + num2 // 调用 num3 // => 3
数字类型基本遵循数学里的加、减、乘、除等运算
// 声明 var str = '晓程序' var str2 = '公开课' var str3 = str + str2 // 调用 str3 // => '晓程序公开课' str3[0] // => '晓'
字符串类型可以通过索引来拿到对应节点的字符 string[index]
string[index]
Number 和 String 可以强制转化
Number('123') // => 123 String(123) // => '123'
Boolean null 和 undefined
// 声明 var ok = true var yes = Boolean(ok) var bad = false var no = Boolean(bad) // 调用 ok // => true yes // => true bad // => false no // => false
布尔类型的数据,非 true 即 false
Boolean() // => false Boolean(undefined) // => false Boolean(null) // => false Boolean('') // => false Boolean(0) // => false Boolean(1) // => true Boolean(' ') // => true Boolean('ooxx') // => true Boolean([]) // => true Boolean({}) // => true
null 和 undefined 都是 false
在 JS 里,0 表示 false 1 表示 true
0
1
'' 空字符串表示 false
''
任何非 0 '' null undefined 的数据都是 true
// 声明 var arr = [1, 2, 3, 4] // 调用 arr[0] // => 1 arr[1] // => 2 arr.length // => 4 arr[arr.length - 1] // => 4 arr[4] = 5 // => arr = [1, 2, 3, 4, 5]
数组有个属性 length 可以放回数组的长度
length
数组的 索引 总是从 0 开始
索引
// 声明 var obj = { x: 1, y: 2 } // 调用 obj.x // => 1 obj['y'] // => 2 obj.z // => undefined obj.z = 3 // => obj = { x: 1, y: 2, z: 3 } obj['x'] = 0 // => obj = { x: 0, y: 2, z: 3 }
通过调用 对象 的 属性 可以获得 属性 的 值
属性
值
obj.key // => value obj['key'] // => value
获取数组的最后一项,可以通过数组的 长度 - 1 来拿到最后一位的 索引
长度 - 1
arr[arr.length - 1]
获取 对象 的 属性 有两种书写方式
obj['key'] obj.key
obj['key']
obj.key
在 JS 里,函数是一种可以重用的代码块
关键字 function
function func() { // 函数体 }
函数由一个关键字 function、一个函数名、一对圆括号、一对花括号组成
// 声明 function name() {...} // 调用 name()
function() {...}
没有名字的函数叫 匿名函数
匿名函数
匿名函数 没有名字,所以定义之后无法调用,因而一般会赋给一个变量来存储或直接执行
// 声明 var fn = function() {...} // => 将匿名函数赋给变量 fn // 调用 fn() // 声明 && 调用 (function(){...})() // => 声明匿名函数后立执行(俗称闭包)
一般情况下,匿名函数 可以用 箭头函数替代
箭头函数替代
function() {...} // => 匿名函数 () => {...} // => 箭头函数
函数在声明的时候,可以拥有自己的参数
function func(arg) { // 函数体 }
其中 arg 就是函数 func 的参数
arg
func
函数的参数写在圆括号内,可以有多个,表示 从函数外部传入函数内部的数据
从函数外部传入函数内部的数据
// 声明 function name(arg, arg2) { return arg + arg2 } // 调用 name(1, 2) // => 3
其中 arg 和 arg2 是形参
arg2
1 2 是实参
return 是 JS 的关键字,表示 返回 也表示 逻辑结束
return
返回
逻辑结束
在 JS 里,所有函数都有一个默认的 返回值 :undefined
返回值
声明函数时,定义的参数叫 形参
形参
调用函数时,输入的参数叫 实参
实参
函数可以有任意类型的返回值 Number String Array Object null undefined
甚至,函数也能返回函数 function
关键字 if else map
if
else
map
if (true) { // 条件为真的逻辑 } else { // 条件为假的逻辑 }
if else 语句需要有一个条件,写在一对圆括号里 ()
if else
()
这个条件必须为布尔值,非 true 即 false
[1, 2, 3].map(function(item) { return item // => 1, 2 ,3 })
每一个数组都内置了一个 map 方法,用于遍历数组的每一项
map 方法需要传入一个函数
var arr = [2, 3, 4] function func(arg) { return arg } arr.map(func) // => 2, 3, 4
写一个函数来遍历一个数组的每一项
在遍历之前,需要判断输入的参数类型是否为数组
如果是,则遍历并打印数组的每一项
如果不是,直接返回,什么也不做
// 声明 var arr = ["小白", "新手", "高手", "大神"] function mission(arr) { var condition = arr instanceof Array if (!condition) { return } arr.map(function(item) { console.log(item) }) } // 调用 mission(arr) // => "小白", "新手", "高手", "大神" mission() // => undefined mission("arr") // => undefined mission(1) // => undefined mission({}) // => undefined
instanceof 是 JS 的关键字,常用于判断数据类型
instanceof
JS 代码执行顺序是 由上而下
由上而下
♦️ A 变量
变量是有名字的容器,容器用于存储数据,通过容器名字获取容器内的数据
JS
定义变量,需要一个关键字、一个操作符、一个变量名和要存储的数据关键字
var
let
const
操作符
=
栗子
小知识点
let
和const
被设计来取代var
三者的区别见 『♣️ A』
♦️ 2 操作符
重点掌握
=
赋值操作符栗子
小知识点
+
-
*
/
无异于日常数学运算符但是
=
在 JS 里是赋值,不是等于
JS 里的
等于
是一种布尔运算
如:
==
、===
♦️ 3 数据类型(上)
在
JS
里,数据的类型可以是数字
、字符串
关键字
Number
String
栗子
其中
2
是数字类型Number
即阿拉伯数字
其中
"2"
、'2'
、'晓程序公开课'
都是字符串类型String
被单引号
或双引号
包裹起来的字符小知识点
str4
和str5
是两种常见的字符串拼凑方式♦️ 4 数据类型(下)
在
JS
里,数据的类型还可以是数组
、对象
关键字
Array
Object
栗子
其中
[...]
由一对中括号包裹起来的都是数组类型Array
数组的每一项可以是任意数据类型,以,
分隔,其中
{...}
由一对花括号包裹起来的都是对象类型Object
以键值对
的方式呈现x: 1
即key: value
每一对以,
分隔小知识点
函数
、类
也是一种对象function
class
♦️ 5 实操
分别申明类型为
Number
String
Array
Object
的 4 个变量栗子
Number
String
Array
Object
小知识点
掌握了四大基本数据类型,便可以根据实际需求为数据选择一种最恰当的存储方式
♦️ 6 特殊类型
在
JS
里,除了Number
String
Array
Object
四大基本类型还有
Boolean
null
undefined
其中
Boolean
为布尔类型,存在两种值true
和false
null
的值是null
表示不存在undefined
的值是undefined
表示未定义栗子
其中变量
yes
和变量no
都是Boolean
布尔类型其中变量
none
是null
类型变量
unset
是undefined
类型小知识点
true
false
null
undefined
属于JS
的关键字,这类特殊字符可以在在声明变量的时候可以直接用♦️ 7 数据的基本操作(上)
JS
的数据类型有Number
String
Array
Object
Boolean
null
和undefined
每一种数据类型,都有独特的操作方式
栗子
数字类型基本遵循数学里的加、减、乘、除等运算
字符串类型可以通过索引来拿到对应节点的字符
string[index]
小知识点
Number
和String
可以强制转化♦️ 8 数据的基本操作(中)
Boolean
null
和undefined
栗子
布尔类型的数据,非
true
即false
null
和undefined
都是false
小知识点
在
JS
里,0
表示false
1
表示true
''
空字符串表示false
任何非
0
''
null
undefined
的数据都是true
♦️ 9 数据的基本操作(下)
Array
Object
栗子
数组有个属性
length
可以放回数组的长度数组的
索引
总是从0
开始通过调用
对象
的属性
可以获得属性
的值
小知识点
获取数组的最后一项,可以通过数组的
长度 - 1
来拿到最后一位的索引
arr[arr.length - 1]
获取
对象
的属性
有两种书写方式obj['key']
obj.key
♦️ 10 函数(上)
在
JS
里,函数是一种可以重用的代码块关键字
function
栗子
函数由一个关键字
function
、一个函数名、一对圆括号、一对花括号组成没有名字的函数叫
匿名函数
匿名函数
没有名字,所以定义之后无法调用,因而一般会赋给一个变量来存储或直接执行小知识点
一般情况下,
匿名函数
可以用箭头函数替代
♦️ J 函数(下)
函数在声明的时候,可以拥有自己的参数
其中
arg
就是函数func
的参数函数的参数写在圆括号内,可以有多个,表示
从函数外部传入函数内部的数据
其中
arg
和arg2
是形参1
2
是实参return
是JS
的关键字,表示返回
也表示逻辑结束
小知识点
在
JS
里,所有函数都有一个默认的返回值
:undefined
声明函数时,定义的参数叫
形参
调用函数时,输入的参数叫
实参
函数可以有任意类型的返回值
Number
String
Array
Object
null
undefined
甚至,函数也能返回函数
function
♦️ Q 判断 && 遍历
关键字
if
else
map
栗子
if else
语句需要有一个条件,写在一对圆括号里()
这个条件必须为布尔值,非
true
即false
每一个数组都内置了一个
map
方法,用于遍历数组的每一项小知识点
map
方法需要传入一个函数♦️ K 综合实操
写一个函数来遍历一个数组的每一项
在遍历之前,需要判断输入的参数类型是否为数组
如果是,则遍历并打印数组的每一项
如果不是,直接返回,什么也不做
栗子
小知识点
instanceof
是JS
的关键字,常用于判断数据类型JS
代码执行顺序是由上而下
这篇文章价值九元