JavaScript 基础 (变量声明, 数据类型, 控制语句)

时间:2021-01-23 18:56:04

创建: 2017/09/16

更新: 2017/09/24 更改标题 【JavaScript 概要】-》 【JavaScript 基础】
完成: 2017/09/25
更新: 2017/10/09 补充函数声明也会上卷 
更新: 2018/01/22 加红函数也会上卷
                         补充内置Obejct等,完善欠缺的内容, 把标题列加粗,字体放大
更新: 2019/02/19 把Object, 函数, Array三小块移除到新博文并删除迁移部分(链接已附在此条相关文本上) 
           从【JavaScript 控制类语法】迁入全部内容相关内容并重构
         改变文档结构, 标题单起一行
         修改标题 【JavaScript 基础】 -> 【JavaScript 基础  (变量声明, 数据类型, 控制语句)】
更新: 2019/02/26 补充for/in相关
         纠正插值方法 `${}`
          
 
待完成事项: TODO
注释
 

所有文末加;

 单行注释
// 单行注释
 多行注释
/*
多行注释
*/
变量声明
 var
var sum;

注:无论声明在哪里,都最先执行
     
重复声明的话只看第一个(因为全部最先执行,所以没有影响)

 let
let sum;

类似c语言中的变量
 和var的区别

 如果有代码块,则作用域为代码块内部(对纯代码块也有效)  {let a = "测试";}
 print(a); //会报错
 变量声明按行执行,不是最开始执行  print(a);
 var a = 21;
 不能重复声明   let a;
 let a; //会报错
 不上卷(不会预先全部声明,遇到代码处才声明)  
   
   
   
   
   
   
 const
const sum; 

let的常数版

 值型  不能变更
 参照型  不能变更object,但是可以变更object的属性(property)
   
   
   
   
   
   
   
   
   
   
数据类型
 值型
 数值

没有整数浮点数的区别们,都是64位浮点数(double)
 数组的索引已经比特运算作为long int(32位)
 符号的记法

 分类  写法  说明
 整数   10进制
 123
 正常写
 16进制 ES6
 0x2a
 0x开头
 8进制 ES6
 0o12
 0o开头
 2进制
 0b110
 0b开头
   
   
 浮动小数点数  整数.小数   3.14
 .小数 
 .123
 整数部分为0可省略
 相当于0.123
 科学计数法
 6.02e21
 1.123E-12
 e和E没有区别
   
   
   

特殊值

 分类  记法  说明
 全局变量   Infinity   无穷大
 NaN  Not a Number
 不定值
    
   
   
   
   
   
   
   
 Number的属性   Number.POSITIVE_INFINITY  正无穷
 Number.NEGATIVE_INFINITY  负无穷
 Number.MAX_VALUE  能用的最大值
 Number.MIN_VALUE  能用的最小值
 Nunmber.NaN  不定值
 Number.EPSILON
 ES6
 一个特定量
 Number.MIN_SAFE_INTEGER
 ES6
 -9007199254740991e-16
 Number.MAX_SAFE_INTEGER
 ES6
 9007199254740991
   
   

 字符串

"..."或者'...'包围
 插值

`this is a test. ${...}`

转义符号

 \0  空字符
 \b  back space(退格)
 \t  tab
 \n  换行 
 \v  垂直tab
 \f  换页 
 ?
 \r  回到行开始
 \'  
 \"   
 \\  
 \xXX  2位的16进制数,表示拉丁文字
 \uXXXX  4位16进制数表示Unicode文字
 \u{XXXXXX}  16进制的编码表示Unicode文字
   
   
   
   
   
   
   
 布尔值

true,false

 特殊值

undefined, null
 注意: undefined不能用来代入

 symbol  和其他的都不一样的值,相当于哈希值
 生成
    var sym = Symbol()
 注意: 每次呼出Sybmol()得到的值都不一样 
 带参数  var sym =
Symbol("test") 
 参数作为符号的描述
 呼出描述  用toString()
 例: sym.toString()
 以字符串为种子生成符号  var sym = Symbol.for("...")
 注: 同一字符串的符号完全相同
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
 符号

TODO p39
 占位符 ${...}

 模板

TODO p41 第八章

 
 
 
 
 对象(object)
 类似于Swift的词典,c的哈希表与值的组合
 参照型,共有一个
 
 
 
 
 
 
 
 
控制语句  
 条件句
 if/else
 if () {
...
}else if (...) {
...
}else {
...
}
 switch
switch(...) {
case 1:
...;
break;
case 2:
...;
break;
case 3:
...;
break;
default:
...;
}
 try/catch/finally  
 循环句
 while
 while(...) {
...
...
}
 do/while
 do {
...
...
} while(...)
 for
//  注: 三个条件可以随意省略
for(...; ...; ...) {
...
...
}
 for/in

注: 获取的是属性名的字符串(获取属性用obj["name"])

Object.prototype等内部的实例属性/方法的enumerable都是false

 for(var i in sample) { // 可以用已有的变量代替var i
...
}

· 有些库对Object.prototype添加方法时enumerable没设为false, 避免误操作的方法

for (var p in obj) {
if (!obj.hasOwnProperty(p)) { continue; }
...
} // 或者
for (var p in obj) {
if (typeof(p) === "function") { continue; }
...
}
 for/of  TODO: 8
 跳跃句
 标签

标签名: statement
 只有break和continue能用到标签

 

 loop: while(...) {
...
}
 break  只有switch和循环文可用
 break; 跳出当前循环
 带标签用法: break 标签名;
 continue  只有循环能用
 continue;
 continue 标签名;
 return  返回后面带的参数,并结束函数