变量

  • var
  • let
  • const

数据类型

8种数据类型,7种基本类型和1种复杂类型object
  • Number:代表整数和浮点数,还有特殊数值,无法表示大于 或者小于
    • 整数
    • 浮点数
    • 特殊数值
      • Infinity 无穷大
      • NaN 代表一个计算错误。它是一个不正确的或者一个未定义的数学操作所得到的结果
  • BigInt:表示任意长度的整数
  • String:字符串
  • Boolean:逻辑类型
  • Null:不属于任何一种类型
  • Undefined:未被赋值
  • Symbol:
  • object:

交互

  • alert
  • prompt
  • confirm

类型转换

字符串转换

let a = true alert(a) a = String(value) // 现在是字符串形式的true

数字类型转换

alert("6" / "2") // string会转换成number类型进行转换 Number("6") // 6 Number("你好") // NaN
Number 类型转换规则
result
undefined
NaN
null
0
true / false
1 / 0
string
去掉首尾空格后纯数字,如果剩余字符为空则结果为0,否则将从剩余字符串读取数字,当类型转换错误则为NaN

布尔类型转换

  • 直观上为”空“的值都为false(0、””、null、undefined、NaA)
  • 其他为true
💡
包含0的字符串”0“ 为true,包含空格的字符 ” “ 也是true
Boolean(1) // true Boolean(0) // false Boolean("abc") // true Boolean("") // false

基础运算符、数学

术语

  • 运算元:运算符应用的对象,1 + 2,有两个运算元1、2
  • 一元运算符:一个运算符只有一个运算元
    • let a = 1; a = -a
  • 二元运算符:一个运算符有两个运算元
    • let a = 1 let b = 2 alert(a + b)

数学

支持一下数字运算
  • 加 +
  • 减 -
  • 乘 *
  • 除 /
  • 求余 %
  • 求幂 ** :a ** b =

数字转化

一元运算符 + 号如果运算元不是数字,可以将其转换为数字
+true // 1 +"" // 0 +undefined // NaN

赋值运算符

  • 赋值 =
    • let a = 1 + 1
  • 链式赋值
    • let a, b, c; a = b = c = 1

原地修改

所有算术和位运算符都有简短的“修改并赋值”运算符:/= 和 -= 等。
let a = 2 a += a a *= a a /= a a -= a

自增自减

  • 自增 ++
  • 自减 --
  • 当运算符置于变量后,被称为“后置形式”:counter++
    • let a = 2 let b = a++ console.log(a, b) // 3, 2
  • 当运算符置于变量前,被称为“前置形式”:++counter
    • let a = 2 let b = ++a console.log(a, b) // 3, 3

位运算符

表达式与运算符 - JavaScript | MDN
一元操作符仅对应一个操作数。 操作符,删除一个对象的属性或者一个数组中某一个键值。语法如下: objectName是一个对象名, property 是一个已经存在的属性, index 是数组中的一个已经存在的键值的索引值。 第三行的形式只在声明的状态下是合法的, 从对象中删除一个属性。 你能使用 delete 删除各种各样的隐式声明, 但是被 var 声明的除外。 如果 delete 操作成功,属性或者元素会变成 undefined。如果 delete可行会返回 true,如果不成功返回 false 。 删除数组元素 删除数组中的元素时,数组的长度是不变的,例如删除 a[3], a[4], a[4] 和 a[3] 仍然存在变成了 undefined 。 delete 删除数组中的一个元素,这个元素就不在数组中了。例如, trees[3]被删除, trees[3] 仍然可寻址并返回 undefined 。 如果想让数组中存在一个元素但是是 undefined值,使用 undefined关键字而不是 delete操作。如下: trees[3] 分配一个 undefined,但是这个数组元素仍然存在: typeof 操作符 可通过下面 2 种方式使用: typeof 操作符返回一个表示 operand 类型的字符串值。operand 可为字符串、变量、关键词或对象,其类型将被返回。operand 两侧的括号为可选。 假设你定义了如下的变量: typeof 操作符将会返回如下的结果: 对于关键词 true 和 null, typeof 操作符将会返回如下结果: 对于一个数值或字符串, typeof 操作符将会返回如下结果: 对于属性值,typeof 操作符将会返回属性所包含值的类型: 对于方法和函数,typeof 操作符将会返回如下结果: 对于预定义的对象,typeof 操作符将会返回如下结果: void 运算符运用方法如下: void 运算符,表明一个运算没有返回值。expression 是 javaScript 表达式,括号中的表达式是一个可选项,当然使用该方式是一种好的形式。 你可以使用 void 运算符指明一个超文本链接。该表达式是有效的,但是并不会在当前文档中进行加载。 如下创建了一个超链接文本,当用户单击该文本时,不会有任何效果。 下面的代码创建了一个超链接,当用户单击它时,提交一个表单。
表达式与运算符 - JavaScript | MDN
  • 按位与 ( & )
  • 按位或 ( | )
  • 按位异或 ( ^ )
  • 按位非 ( ~ )
  • 左移 ( << )
  • 右移 ( >> )
  • 无符号右移 ( >>> )

值的比较

比较结果为Boolean

字符串的比较

不同类型的比较

条件分支:if 和 ?

逻辑运算符

  • || 或
  • && 与
  • ! 非 :可以用来求Boolean
    • !!0 // false !0 true
  • ?? 空值合并运算符

循环 while 和 for

while

do while

for

break continue 标签

label: for(let a = 0; a < 10; a++) { if(a === 2) break label; }

switch

switch () { case '': { break; } case '': { break; } default: { break } }

函数声明

function showMessage() {}

函数表达式

let showMessage = function() {}

函数是一个值

function sayHi() { alert('Hello') } let fuc = sayHi; fuc() sayHi()

回调函数

function ask(question, yes, no) { if (confirm(question)) yes() else no(); } function showOk() { alert( "You agreed." ); } function showCancel() { alert( "You canceled the execution." ); } // 用法:函数 showOk 和 showCancel 被作为参数传入到 ask ask("Do you agree?", showOk, showCancel);

匿名函数

匿名函数这样的函数无法在ask函数声明外被调用访问
function ask(question, yes, no) { if (confirm(question)) yes() else no(); } ask("Do you agree?", function() {alert('yes')}, function() {alert("no")});

箭头函数基础知识

 
badge