变量
-
创建常量: const+名字
-
创建变量: let+名字 或者var,初始值为undefine,或者布尔中的false(来判断是否赋值,数值为NaN
null 数值类型为0,布尔为false
let不能多次声明有相同名称的变量,但是var能,一般用于局部变量
var可以先初始化再定义,但是let不能。语句块中声明的变量将成为全局作用域的局部变量
- 变量提升:
先使用变量稍后再声明变量而不会引发异常,适用于var,提升后的变量返回undefined
函数提升:
只有函数声明会被提升到顶部,而函数表达式不会被提升
foo(); // "bar"
function foo() {
console.log("bar");}
- 全局变量:
全局变量是全局对象的属性
- 暂时性死区
使用let命令声明变量之前,该变量都是不可用的。在if语句块里,let声明tmp之前都是tmp的暂时性死区
ar tmp = 123;
if (true) {
tmp = 'abc'; // ReferenceError
let tmp;}
- 类型 Number,String,Boolean,null(注意大小写敏感),undefined,BigInt(任意精度的整数),Symbol七种数据类型和Object.
- Array
创建数组:
const arr1 = new Array(element0, elementN);
const arr2 = Array(element0, elementN);
const arr3 = [element0, elementN];
const arr3 = [];
arr3.length = arrayLength;
const arr2 = Array(arrayLength)
const arr1 = new Array(arrayLength)
数组与对象
const obj = {};
obj.prop = [element0, element1, /* … ,*/ elementN];
// 或
const obj = { prop: [element0, element1, /* … ,*/ elementN] };
X.unshift() 和 X.shift() 数组的开始与结尾
X.push(),X.pop()
X.concat()连接两个或多个数组
let myArray = ['1', '2', '3'];
myArray = myArray.concat('a', 'b', 'c');
// myArray 现在是 ["1", "2", "3", "a", "b", "c"]
X.split(Y) 需要一个参数,您要将字符串分隔的字符,并返回分隔符之间的子串,作为数组中的项
使用X. join(Y) 方法进行相反的操作
使用X. toString() 方法,不需要一个参数,默认是逗号
- object
let dog={name: 'xiao', breed :'Dalmation'};
//搜索采用dog.name
动态类型:typeof,给一个变量赋值不同的数据类型
- 字符串:
字符串是不变的类数组对象,一旦确定就无法修改
当数字和字符串用‘+’,数字转换为字符串,并将这两个字符串连接在一起,
Number(X)对象将把传递给它的任何东西转换成一个数字、
"37" - 7 // 30 "37" + 7 // "377"
parseInt,parseFloat返回整数或浮点数,或者一元加法运算符
"1.1" + "1.1" = "1.11.1"
(+"1.1") + (+"1.1") = 2.2
// 注意:加入括号为清楚起见,不是必需的。
X.toString() 的方法,它将把它转换成等价的字符串.
X.length,X.indexOf(Y)查找字串并返回第一个元素的下标
X.slice(x,y)知道字符串中的子字符串开始的位置,以及到想要结束的字符下标(不包括结束的字符)
X.slice(x)在某个字符下标之后提取字符串中的所有剩余字符(包括当前字符下标)
X.toLowerCase()和X.toUpperCase()字符串并将所有字符分别转换为小写或大写
Z.replace(X,Y)方法将字符串中的一个子字符串替换为另一个子字符串
字符串对象:
const foo = new String('foo'); // 创建一个 String 对象
console.log(foo); // 输出:[String: 'foo']
typeof foo; // 返回 'object'
模板字符串:反勾号:· ·
const five = 5;
const ten = 10;
console.log(`Fifteen is ${five + ten} and not ${2 * five + ten}.`);
// "Fifteen is 15 and not 20."
- Number:
数字对象:有关数字的常量属性,不能改变这些属性(只能从Number中引用,而不是自己创建的)但可以使用他们
var infiniteNum = Number.POSITIVE_INFINITY;
var negInfiniteNum = Number.NEGATIVE_INFINITY
数学对象(Math):Math.PI //3.14等
日期对象(Data):没有属性,月份0~11(一月到12月)
var today = new Date();
//当前时间
var endYear = new Date(1995, 11, 31, 23, 59, 59, 999);
endYear.setFullYear(today.getFullYear()); // 把年设置为今年
var msPerDay = 24 * 60 * 60 * 1000; // 每天的毫秒数
var daysLeft = (endYear.getTime() - today.getTime()) / msPerDay;
var daysLeft = Math.round(daysLeft); //返回今年剩下的天数
字符串转化为数字:parseInt或者一元加法运算符
(+"1.1") + (+"1.1") = 2.2// 注意:加入括号为清楚起见,不是必需的。
- 字面量:
字面量是由语法表达式定义的常量;或,通过由一定字词组成的语词表达式定义的常量
- 数组字面量:
JavaScript 语言将会在每次对包含该数组字面值的表达式求值时解释该数组。另一方面,在函数中使用的数组,将在每次调用函数时都会被创建一次。
数组字面值同时也是数组对象
- 布尔字面量:
不要混淆作为布尔对象的真和假与布尔类型的原始值 true 和 false。布尔对象是原始布尔数据类型的一个包装器
- 数字字面量:
语言标准要求数字字面量必须是无符号的。但是像-123.4这样的代码片段还是没有问题的,会被解释为一元操作符-应用于数字字面量123.4
- 整数字面量:
八进制的整数以 0(或 0O、0o)开头,只能包括数字 0-7
二进制整数以 0b(或 0B)开头,只能包含数字 0 和 1
- 浮点数字面量
-.2345789 // -0.23456789
-3.12e+12 // -3.12*10^12
- 对象字面量:
如果对象属性名字不是合法的 javascript 标识符,它必须用""包裹
通过类数组标记 ("[]") 访问和赋值
var unusualPropertyNames = {
"": "An empty string",
}
console.log(unusualPropertyNames.""); // 语法错误:Unexpected string
console.log(unusualPropertyNames[""]); // An empty string
- RegExp字面量:
正则表达式是字符被斜线(译注:正斜杠“/”)围成的表达式
var re = /ab+c/;
//保持不变则可以使用字面量
var red=new RegExp("ab+c");
//正则表达式需要改变用构造函数创建
/Chapter (\d+)\.\d*/
//用到了括号这部分所匹配的字符会被记住以备后续使用
/ab*c/
//*的意思是前一项出现零次或者多次
断言:表示匹配在某些情况下发生(如以某个字符开头)
字符类:区分不同类型字符,例如字母和数字
组和范围:表示表达式字符的分组和范围
量词:表示匹配的字符和数量
Unicode属性转义
反斜杠:‘\’转义具有特殊字符的字面值,构造函数使用\
使用正则表达式:
var myRe = /d(b+)d/g;
var myArray = myRe.exec("cdbbdbsbz");
var myRe = new RegExp("d(b+)d", "g");
var myArray = myRe.exec("cdbbdbsbz");
//dbbd
exec与match区别,exec输出数组[ "dbbd", "bb", index: 1, input: "cdbbdbsbz" ]而match输出[ "dbbd" ]
var myArray = /d(b+)d/g.exec("cdbbdbsbz");
console.log("The value of lastIndex is " + /d(b+)d/g.lastIndex);
//The value of lastIndex is 0
需要访问一个正则表达式的属性,则需要创建一个对象初始化生成器,你应该首先把它赋值给一个变量
- 字符串字面量:
在字符串字面值上使用字符串对象的所有方法——JavaScript 会自动将字符串字面值转换为一个临时字符串对象,调用该方法,然后废弃掉那个临时的字符串对象
字符串是不变的类数组对象