文章目录
一、typeof操作符
一个用来判断数据类型的操作符。
but!typeof只能准确的判断简单数据类型和function(检测null时会返回object)
var nickname = 'chonger';
//打印变量nickname的数据类型:
colsole.log( typeof nickname );//String
二、基本(简单)数据类型
保存在栈内存里
1.字符串String
需要用引号括起来,双单皆可。”“ ’‘
双引号和单引号都不能包含自己,但是双引号可以包含单引号。
此时,如果输出的结果需要引号时,涉及到转义字符
str = "我说:"你好!"";❎
str = "我说:\"你好!\"";✅
str = "我说:'你好!'";✅
转义字符
转义序列 | 字符 |
---|---|
\b | 退格 |
\f | 换页 |
\n | 换行 |
\r | 回车 |
\t | 制表符 |
’ | 单引号 |
" | 双引号 |
\ | 反斜杠 |
当字符串太长时,为了方便阅读,可以进行换行处理,但是不可以直接按enter键,否则会报错。此时可以使用**+**来连接两个字符串
var poem;
poem = "生如夏花之绚丽"+
"死如秋叶之静美"+
"还在乎拥有什么";
//这里只是代码格式时的换行,若是要在浏览器中换行显示,则用换行符\n
2.数值Number
-
包括整数和浮点数。保存浮点数值需要的内存空间时保存整数的两倍。
-
数字的最大值(最大正数):Number.MAX_VALUE = 1.7976931348623157e+308
-
数字的最小值(最小正数):Number.MIN_VALUE = 5e-324
-
若数值超过其最大值,则显示
Infinity
(无穷),加负号则为负无穷。正无穷和负无穷是无法参与运算的。如何判断一个数字是否超出了最大值和最小值呢?
//Finite -> 有限的 let num_ten = 5 isFinite(num_ten)//true 表示没有超出 let num_eleven = 2e308 isFinite(num_eleven)//false 表示超出
-
NaN
是个特殊数字,NaN
= not a number。任何涉及NaN
的操作(例如NaN
/10)都会返回NaN
,其次,NaN
与任何值都不相等,包括NaN
本身 -
js
中整数运算基本保证准确,浮点数运算可能会得到不精确的结果。
3.布尔值Boolean
true
false
用来逻辑判断。注意都是小写,大写的True
和False
并不是布尔值。
4.空值Null
-
只有
null
一个值,用来表示一个空的对象(空对象指针)。 -
使用
typeof
检查数据类型时,会返回Object
。 -
如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为
null
。这里一来,只要检查null值就可以知道相应的变量是否已经保存了一个对象的引用。
5.未定义Undefined
当声明变量,却并未赋值时,表示undefined(只有这一个值)
var message ;
console.log(message);//此时打印出的值是undefined
事实上,undefined是派生自null的,因此下边的操作是正确的。
console.log(null == undefined);//true
三、引用数据类型(复杂)
对象object
包括对象object
、数组Array
、函数Function
所有变量都保存在内存里–>堆内存(保存地址)
Object类型
表示存储任意多的值,对数据类型没有限制。
(1)构造实例
①使用new
操作符后跟object
构造函数
var person = new Object();
person.name = "chongEr"; //字符串类型
person.age = 18; //Number
person.hobby = null; //Null
person.student = true; //Boolean
person.classmate{ //对象
nickName : 'xiaoming',
age :18
}
②使用对象字面量表示法,目的在于简化创建包含大量属性的对象的过程。
//创建一个person对象
var person = {//左边的{表示对象字面量的开始,就是一个容器,把多种类型的值放在一个变量里
name : "chongEr",//属性名: 属性值,<使用逗号来分隔不同的属性>
age : 18//属性名: 属性值(属性名不要用数字)
};
//这里的属性名也可以使用字符串
var person = {
"nickName" : "chonger",
"age" : 18
}
(2) (查)访问对象属性表示的办法
① 点表示法:对象.属性名
var person = {
"nickName" : "chonger",
"age" : 18
}
console.log(person.age);//18
②方括号:对象[‘属性名’]
方括号语法的主要优点是可以通过变量来访问属性,如果属性名中包含会导致语法错误的字符,或者属性名使用的是关键字或保留字,也可以使用方括号表示法。
alert(person ["name"]);//对象['属性名']
var person = {
"nickName" : "chonger",
"age" : 18
}
var propertyName = "nickname";
alert(person[propertyName]);//chonger<--通过变量来访问属性
//下方例子里,first name中包含一个空格,就不能使用点表示法来访问他
person["first name"] = "Nicholas";
(3) 增删改
var person = {
"nickName" : "chonger",
"age" : 18
}
//增加一个属性
person.sex = "girl";//.会把sex转化成为字符串
person['hobby'] ='null'; //[]不会进行转化,写什么就是什么
console.log( person );
//删除一个属性
delete person.hobby;
console.log( person );
//修改一个属性
person.age = 19;
console.log( person );
Array数组
数组的写法是一个中括号 :[]
数组里边可以存储任意类型的数据(简单数据类型和所有复杂数据类型),每个值之间用逗号隔开,可以写无数个值。
ECMAScript 数组的大小是可以动态调整的,即可以随着数据的添加自动增长以容纳新增数据。
(1)构造实例
①使用Array构造函数
//构造Array函数
var colors = new Array();
var colors = Array();//new可以省略
//可以给构造函数传递该数组的数量
var colors = new Array(3);//表示创建一个length为3的数组
//也可以向 Array 构造函数传递数组中应该包含的项
var colors = new Array("red", "blue", "green");
②数组字面量表示法:[任意值1,任意值2,任意值3,任意值4…]
var colors = ['red','blue','green'];//创建一个包含3个字符串的数组
var names = [];//创建一个空数组
var values = [1,2,];//不要这样!这样会创建一个包含2或3项的数组
var options = [,,,,,]//不要这样!这样会创建一个包含5或6项的数组
//数组中套对象
var students ={
{name:'liBai', sex:'boy',age:10},
{name:'wangZhaoJun', sex:'girl', age:10},
{name:'luban7hao',sex:'boy',age:3}
}
colsole.log(students);
console.log(students[1]['age']);//10
(2)增删改查
var colors = ['red','blue','green'];
//新增第四项,第五项
colors[3] = "brown";
colors[arr.length] = '我是新增色';
console.log(colors);//可以访问数组长度,此时数组有五项
//删除
colors.length = 4;//将会删除最后一项
//如果想删除数组首项或中间某一项,则👇
delete colors[2];//表示想删除"green"
cosole.log(colors);//但是,数组长度依然不会变,只是color[2]变成了empty(空)(相当于只是删除了值)
//修改
colors[1] = 'yellow';//修改blue为yellow
//查(访问)
colsole.log(colors[0]);//打印第一项:red
Function函数
function代表要声明一个函数。通俗来讲,函数就相当于一个工厂,将某些东西放进去加工后,再吐出来加工后的产物,用来实现某个功能。
(1)声明函数
function some(){
console.log(1);//在后边加括号不报错的都是函数
}
//①函数声明:
function sum (num1 , num2){
return num1 + num2;
}
//②用函数表达式定义函数(不推荐<--两次解析代码,影响性能)
var sum = function(num1 +num2){
//定义了变量sum并将其初始化为一个函数
return num1 + num2;
};//注意这里的分号还要写,就像声明其他变量一样
(2)函数调用
function some(){
console.log(1);//此时控制台上并不会打印出1
}
some();//此时运行some函数里边的代码
function some2(abc){
console.log(abc);
}
//函数可以无数次调用
some2 = ('露娜');
some2 = ('公孙离');
(3)实参形参
//实参-->传递给函数的东西
function some1(){
console.log('我是some1函数');
}
//形参-->函数中的变量
function factory(abc){//abc就是形参
var abc = '皮皮虾';
console.log(abc);
}