JavaScript基础知识

备注

本文知识不足一哂,仅仅是我学习过程笔记(以加强记忆)

注释

JavaScript注释方法有2种:

  • 单行注释 //

  • 多行注释 /*    */

大小写

ECMAScript (即JavaScript) 中的一切都区分大小写。也就是不论变量、函数名还是操作符,都区分大小写。

标识符

  • 标识符,即 变量、函数、属性或函数参数。

  • 标识符由一个或多个字符组成,首字母必须是字母、下划线( _ )或美元符号( $ );其他字符则可以包含数字 ( 不能使用减号 - ,这点和 Shell Atlas 不同,切记)

  • 推荐采用驼峰命名方法,即 第一个单词首字母小写,后面每个单词的首字母大写 (虽然不是强制,但是是 最佳实践 ,我个人觉得也许可以在Shell中也使用类似命名方法)

  • 和所有语言一样,关键字、保留字、 truefalsenull 不能作为标识符

语句

  • ECMAScript 的语句以 分号 ( ; )结尾(同 C Atlas )

  • 多条语句可以合并到一个C语言风格的代码块中:

JavaScript使用C语言风格代码块
if (test) {
    test = false;
    console.log(test);
}

变量

ECMAScript的变量是 松散类型 ,也就是变量可以保存任何类型的数据。

有3个关键字可以声明变量:

  • var : 函数作用域有效

  • const

  • let : 代码块作用域有效(也就是 let 作用域更小,类似在 if ... {...} 这样的代码块中有效)

  • 定义多个变量的方法:

定义多个变量
var message = "hi",
    found = false,
    age = 29;

变量作用域

  • 使用var操作符定义的变量会成为包含它的函数的局部变量 : 也就是说,如果在一个函数内部使用 var 定义一个变量。则这个变量在函数退出时被销毁。

  • 如果在函数内部省略 var 操作符,则创建的变量是 全局变量

警告

在局部作用域定义全局变量会导致程序很难维护。在严格模式下,如果给未声明的变量赋值,会导致抛出 ReferenceError

  • 函数作用域内部通过 var 定义变量,则这个变量定义语句在作用域内部任何位置都是一样的,ECMAScript会自动将所有变量定义语句都拉到函数作用域的顶部;并且多次使用 var 声明同一个变量也没有问题(最后一个生效)

  • let 定义的变量只在代码块部分有效,而且不会自动提升到代码块顶部;也就是说如果 let 定义变量的语句在使用这个变量的语句之后,就会触发 ReferenceError

  • 合理使用 let 申明块变量可以 避免循环定义的迭代变量渗透到循环体外部 :

在循环体内部使用 let 定义变量,避免变量泄漏
for (let i = 0; i < 5; ++i) {
    // 这里变量 i 只在for循环内部有效,可以避免循坏体外部使用变量 i 时候误被这里的循环变量i 污染
}