JS笔记(二)变量、数据类型
字面量:即常量,有数字、字符串、布尔字面量三种
标识符:即变量名、函数名、属性名、参数名,就是写代码时起的名字。
1、申明变量:
JS使用“变量”来存储数据,变量是计算机内存中存储数据的标识符,根据变量名称可以获得内存中存储的数据。
JS中声明变量用var,存储数据有数据对应的数据类型(var 是ES5,let(变量)、const(常量)是ES6)
声明变量和初始化:var name="小黑"
//存储一个对象 var ohj = new Object();
规范:js每行代码结束都要加分号;
js中区分大小写;
js中声明变量时,字符串类型的值要用双引号或者单引号括起来;
变量名字要有意义;
变量名规范:以字母、$ 、_开头,后面是$、字母或者数字。一般小写。驼峰命名。不以数字开头;不能使用关键字;
不能使用关键字。
2、变量的交换
(1)var num1 = 10
var num2 = 10
var temp = num1;
num1 = num2;
num2 = temp;
(2)用于数字交换
var num1 = 10;
var num2 = 20;
num1 = num1+ num2; //30
num2 = num1-num2; //10
num1 = num1-num2; //20
(3)
var num1 = 10;
var num2 = 20;
num1 = num1 ^ num2;
num2 = num1 ^ num2; //10
num1 = num1 ^ num2; //20
3、变量的数据类型
JS中原始数据类型(6种):number,string,boolean,null,undefined,object对象(引用数据类型)
(注:内置对象function、Array、Date、Error等属于Obiect类型)
(注:基本数据类型传递的是数值,引用数据类型在参数赋值时传递的是地址)
(注:变量都是保存在栈内存中,基本数据类型的值直接保存在栈内存,对象保存在堆内存中,而变量保存了对象的内存地址,即对象的引用。)
(1)number:数值类型(包括整数和小数,而小数在其他语言中叫浮点型,分为单精度float四个字节存储和双精度double八个字节存储,整数是int)
一个特殊数字:NaN,not a number非数值,undefined+数字输出得到NaN
(2)string:字符串类型,用‘’或者“”括起来
(3)boolean:布尔类型(true真1,false假0)
(4)null:空类型,变量的值如果想要变成null,必须手动设置,用typeof检查null类型为undefined
(5)undefined:未声明(定义),或声明变量没有赋值时结果是undefined,函数没有明确返回值时接收了也是undefined
注:10+null =10; 10 + undefined = NaN
(6)object:对象
4、js中String类型:
使用单引号或者双引号。
字符串长度是多少:console.log(str.length);
(注:字符串有不可变性
var a = '我的'; a = '你的';
字符串里面的值不会被改变,看上去值变了,其实内存中新开辟了一个内存空间)
(1)转义符:用于在String数据中显示符号
html中的转义符:< < > > 空格
js中字符串转义符:\t tab键; \\中间有一个\ \" \'
(2)字符串拼接:用+号。
如果一个是字符串,另一个是数字,用+是字符串的拼接,用-会发生计算,叫隐式转换。
例子1:
例子2:
5、获取变量的数据类型:
var num = 10;
console.log(typeof num); //number
var nll = null; 此时nll是个对象
一些返回结果:
(typeof function)//function
(typeof null)//object,null代表空对象
(typeof undefined)//undefined
(typeof NaN)//number,NaN是一个特殊的数字
(typeof []) //object,[]是引入数据类型
(typeof {}) //object,{}是引用数据类型
数据类型有范围:最大值和最小值
console.log(Number.MAX_VALUE);//数字最大值
console.log(Number.MIN_VALUE);//数字最小值
(注:不要用小数去验证小数,sum=0.1+0.3 == 0.3。也不要用NaN验证NaN,用isNaN(num) )
6、类型转换:
(1) //其他类型转数字类型:三种方式
1)转整数:parseInt(); 取整,不四舍五入
console.log(parseInt("10a")); 结果10,g10转不了是NaN
2)转小数:parseFloat();
console.log(parseFloat("10agg")); 结果10,g10转不了是NaN
3)转数字:Number();
console.log(Number("10agg")); 结果NaN,g10是NaN
//其他类型转字符串类型
1).toString(); -- var num = 10; console.log(num.toString()); 变字符串类型
2)String(); -- var num1 = 10; console.log(String(num1)); 变字符串类型
3)隐式转换:--var a = 123; console.log(a + '')
注:如果变量有意义用.toString();转换 ;
没有意义用String(); 如var num2; num2没有赋值就没意义,转为undefined。
//其他类型转布尔类型
1) Boolean(值); -- console.log(Boolean(1)); 结果true ;
console.log(Boolean(undefined); 结果false
(2)隐式类型转换:
isNaN(); //判断指定参数是否是NaN非数字类型,返回结果为Boolean类型
自增/自减运算符:++、-- 如:var a = "666"; a++; console.log(typeof a); //number
正号/负号:+a、-a
加号:+
运算符:-、*、/
逻辑运算符:&& || ! 。
关系运算符:< > <= >=
7、整数和负数: