FreeCodeCamp 基础Javascript 总结(与某些主流编程语言对比)

430 阅读11分钟

1. Javascript 的注释方法

Javascript的注释方法和C语言是一样的。

单行用 " // ",多行用 "/ /"。

2. Javascript 怎么声明变量

Javascript通过在变量前面使用关键字 var (一般用)letconst (ES6版本)声明一个变量。

在 2015 后的 JavaScript 版本 (ES6) 允许我们使用 const 关键字来定义一个常量,使用 let 关键字定义的限定范围内作用域的变量。

PS: 初始化数值为不同的数据类型时,JS不会像C一样要用各种各样的数据类型。

3. Javascript 的赋值及初始化

Javascript赋值、初始化的方法和C语言一样。

  • (也可以把变量的值赋给另一个变量)

4. Javascript 数据类型

  • JavaScript 提供八种不同的 数据类型,它们是:
  •   undefined (未定义)null (空)boolean (布尔型)string (字符串)symbolnumber (数字)bigint (可以表示任意大的整数)object (对象)

详细了解数据类型: JavaScript 数据类型 | 菜鸟教程

5. Javascript 布尔值

和 C、C++、Python 等编程语言的布尔值是一样的。

6. Javascript 语句的结束

Javascript和C语言一样,要用分号结束语句。

7. Javascript 字符串的定义

在Javascript中,字符串是用双引号(或单引号,仅限于Javascript)括住的(这一点和C一样)。

与其他一些编程语言不同的是,单引号和双引号的功能在 JavaScript 中是相同的。

8.Javascript 变量初始化

当 JavaScript 中的变量被声明的时候,程序内部会给它一个初始值undefined(不像C一样乱给值)。

当你对一个值为 undefined 的变量进行运算操作的时候,算出来的结果将会是 NaN,它的意思是 "Not a Number"

如果你用 undefined 变量连接一个字符串,你将得到一个 undefined字符串

9.Javascript 变量和函数名注意事项 & 驼峰命名法

在 JavaScript 中所有的变量和函数名都是大小写敏感的。 建议使用驼峰命名法(camelCase)来书写一个 Javascript 变量。

在驼峰命名法(camelCase)中,变量名的第一个单词的首写字母小写,后面的单词的第一个字母大写。

10.使用 var、let、const 声明变量的异同

使用 var 关键字声明变量的最大问题之一是: 你可以轻松覆盖变量声明 (即可以声明同名变量多次) , 但是随着你的代码库变大,你可能会意外地覆盖一个你不打算覆盖的变量。 由于此行为不会引发错误,因此搜索和修复错误变得更加困难。

所以 ES6 中引入了一个名为 `let` 的关键字,**当你使用** **`let`** **时,同名的变量只能声明一次。**

在 ES6 中,你还可以使用 const 关键字声明变量。

const 具有 let 的所有出色功能,另外还有一个额外的好处,即使用 const 声明的变量是只读的。

它们是一个常量值,这意味着一旦一个变量被赋值为 const,它就不能被重新赋值。

你应该始终使用 const 关键字命名不想重新分配的变量。 这有助于避免给一个常量进行额外的再次赋值。

(这一点和C一样)

let const 的共同点在于: 同名的变量只能声明一次。

但区别在于: let 可以重新赋值,但 const不行。

13. Javascript 里一些和 C 一样的运算符号

Javascript的(加减乘除、求余、递增递减运算、复合赋值)方法和符号都和C语言一样。

在数学中,判断一个数是奇数还是偶数,只需要判断这个数除以 2 得到的余数是 0 还是 1。

余数运算符(remainder)(%)有时被错误地称为“模数”运算符。 它与模数非常相似,但不能用于负数的运算。

14. Javascript 赋值

赋值时 JavaScript 会先计算等号右边的内容,即先运算、再赋值,这一点和C一样。

15. Javascript 转义字符

Javascript也有转义字符,作用和C一样。

16. Javascript 如何在字符串里正确使用引号

在Javascript里,字符串在开头和结尾都有相同的引号,如果在中间使用了相同的引号,字符串会提前中止并抛出错误。

1.    **当你需要在一个字符串中使用多个引号的时候,你可以使用单引号包裹双引号或者相反。** 常见的场景比如在字符串中包含对话的句子需要用引号包裹。 另外比如在一个包含有 `<a>` 标签的字符串中,标签的属性值需要用引号包裹。

17. Javascript 字符串连接

在 JavaScript 中,当 + 操作符被用于一个 String 类型的值的时候,它被称作拼接操作符。

(即JS可以用"+"号把两个字符串拼接起来形成一个新的字符串,类似 C++ 和 Python 的字符串连接)

当然也可以连接多个字符串或连接字符串变量,如下图

通过这个方法,可以进行填词造句。

18. 如何利用复合赋值符号拼接字符串

在 JavaScript 中,可以用“+=”符号拼接字符串,例如下图

当然,“+=”号的右边也可以为字符串变量,如下图

19. Javascript 获取字符串的长度

你可以通过在字符串变量或字符串后面写上 .length 来获得 String 的长度。

像下面这样,但注意:.length在计算字符串的长度时也会把空格算进去。

20. Javascript 条件&循环语句的语法(与C对比)

Javascript里的 if 语句、if-else 语句、switch-case 语句、while 循环、do-while 循环、for 循环语法,都和C的语法一样。

这些语句使用时,最好用大括号把语句内容括起来。

PS:这些语句在Javascript中都可以重复嵌套。

21. Javascript 里一些和 C 一样的运算符号(二)

Javascript的等于符号“==”、严格等于符号“===”、不等于符号“!=”,以及严格不等于符号“!==” 与C里面的一样。

区别在于,如果要比较的值不是同一类型,(不)相等运算符会先执行数据类型转换,然后比较值。 而严格(不)相等运算符只比较值,不会进行数据类型转换。

Javascript的大于符号“>”、大于等于符号“>=”、小于符号“<”,小于等于符号“<=” 与C里面的一样。

Javascript的逻辑运算符(非、与、或)和“条件运算符( ?: )” 与C里面的一样。

22. 如何求变量或值的类型

在 JavaScript 中,你可以使用 typeof 运算符确定变量或值的类型,如下图所示:

23. 使用方括号查找字符串中的第一个字符

例如,单词 Charles 的索引 0 的字符是 C。 所以如果 const firstName = "Charles",你可以通过 firstName[0] 得到字符串第一个字母的值 (原理类似C的字符数组)

firstName[0] 的值为字符串 C 。

24. 字符串的不变性

不能通过索引的方式修改字符串的值,要修改字符串的值只能对字符串变量重新赋值。

25. 使用方括号查找字符串中的第 N 个字符(类似C的“字符数组引用”)

26. 使用方括号查找字符串中的最后一个字符

(利用“字符串长度-1”的方法查询,不 -1 的话会出问题,原理和C语言的数组一样)

同理,也可用类似的方法查找倒数第N个字母的值,如下图。

27. 使用 JavaScript 数组将多个值存储在一个变量中

28. 将一个数组嵌套在另一个数组中

(类似C的二维数组)

29. 通过索引访问数组中的数据

(类似C语言中数组的引用) 上图中 array[0] = 50 , array[1] = 60。

30. 通过索引修改数组中的数据

这里和C语言中修改数组某项的值是一样的。

31. 使用索引访问多维数组

32. 使用 push 方法操作数组

作用:把数据添加到数据末尾。

33. 使用 pop 方法操作数组

作用:移除数组末尾的元素并返回这个元素。

第 3 行的 console.log 将返回的 6 显示出来,第 4 行的 console.log 显示的是经过 pop() 处理的数组。

34. 使用 shift 方法操作数组

作用: 移除数组中的第一个元素。

shift() 用于移除数组中的第一个元素,pop() 用于移除数组中的最后一个元素。

35. 使用 unshift 方法操作数组

作用: 往数组的头部塞元素。

36. Javascript 函数初步

和 C 的函数类似,但前面是 function 类型,不是和 C 一样的 ~~~~int~~~~ 、~~~~void~~~~ 等类型。

和 Python 的函数类似,但 Python 的函数用 def 定义,Javascript 的函数用function定义。

37. 将值传递给带有参数的函数

定义带形参的函数的做法与 C 类似,但不用像 C 一样声明参数的变量类型。

38. 使用 return 给函数返回值

和 C 一样,可以直接用函数返回值(但 C 里面要使用除了 void 类型以外其它类型的函数才能返回值)。

39. 全局作用域和函数

在 JavaScript 中,作用域 涉及到变量的作用范围。 在函数外定义的变量具有 全局 作用域。 这意味着,具有全局作用域的变量可以在代码的任何地方被调用。 (这一点和 C 一样)

未使用 let const 关键字声明的变量会在 global 范围内自动创建。 当在代码其他地方无意间定义了一个变量,刚好变量名与全局变量相同,这时会产生意想不到的后果。 你应该总是用 letconst 声明你的变量。

40. 局部作用域和函数(原理和 C 一样)

41. 函数中的全局作用域和局部作用域

要点: 局部变量 优先级比 全局变量 要高。

42. 函数也可以返回 undefined

43. 使用返回值赋值(和 C 一样)

44. 排队(数据结构中的一种,遵循“先进先出”的原则)

在计算机科学中队列(queue)是一个抽象的数据结构(Data Structure),队列中的条目都是有秩序的。 新的条目会被加到队列的末尾,旧的条目会从队列的头部被移出。

45. 创建 Javascript 对象

此处要注意对象的语法结构(虽然说和 C 的结构体类似,但还是有点区别的)。

PS:Javascript 并不是面向对象的!

46. 通过点号表示法访问对象属性

这里的方法和 C 的结构体访问成员是一样的。

47. 使用方括号表示法访问对象属性

和“点号表示法”一样,只不过把点号换成了方括号。

48. 如何循环二维数组

49. 通过变量访问对象属性

50. 更新对象属性 / 给对象添加新属性(方法一样的)

51. 删除对象的属性

方法: 使用 delete 关键字来删除。

52. 使用对象进行查找

53. 测试对象的属性

给对象用 .hasOwnProperty(proname) 方法来检查对象是否有指定的属性。

54. 操作复杂对象

下面的例子,数组里面套了个对象,对象里面又套了个数组。

55. 访问嵌套对象

可以通过连续使用点号表示法和方括号表示法来访问对象的嵌套属性。

示例

56. 访问嵌套数组

57. 用递归代替循环

58. 如何生成随机分数

随机数非常适合用来创建随机行为。

在 JavaScript 中,可以用 Math.random() 生成一个在0(包括 0)到 1(不包括 1)之间的随机小数。 因此 Math.random() 可能返回 0,但绝不会返回 1

59. 如何生成随机整数

Math.floor() 用于向下取整:

60. 生成某个范围内的随机整数

max - min + 1 代表区间里数字的个数,要加上 min 才能从区间最小的数开始生成。

61. 使用 parseInt 函数

62. 使用 parseInt 函数传入一个基数

string: 数字字符串

radix: 进制数

63. 如何使用递归创建一个倒计时