文章目录
前言
这周花了三天时间写html和css的项目,所以学习新知识只有两天,掌握了js的基本属性。
一、 变量
1.定义变量
es5:
<script>
var bianLiangMing=123;
console.log(bianLiangMing);
</script>
命名规则:
1.$ _ 数学 字母,不能以数字开头
2.不能用关键字,保留字(现在不是关键字,但是未来可能会成为关键字)命名
3.最好用驼峰命名法或者下划线
es6:
新增了let const
区别:
1.var具有变量提升,let和const没有
2.var变量可以重复定义,let和const不能被重复定义
3.let和const定义的变量具有块级作用域,var不能有块级作用域
4.const定义的变量值是个常量,不能重新赋值
直接输入biaoLiangMing = 2;定义为全局变量
var biaoLiangMing = 2;定义为局部变量
2.数据类型
基础数据类型 5+1种
string number Boolean null undefined + symbol
栈内存:连续的的结构,先进后出的特性
引用(复杂)数据类型 1种
Object{Array,Function,arguments,Set}
堆内存:不连续的树状结构
值传递/址传递
// 值传递
// var num1 = 1;
// var num2 = num1;
// num2 = 3;
// console.log(num2);
// console.log(num1);
// 址传递
// var lpz = {
// name:'zsj',
// weight: '88'
// }
// var lzz = lpz;
// console.log(lzz);//输出name:'zsj',weight: '88'
// lzz.name = 'lzz'
// lzz.weight = '100'
// console.log(lzz);//输出name:'lzz',weight: '100'
// console.log(lpz);//输出name:'lzz',weight: '100'
查看检查变量的数据内型
console.log(typeof str);
console.log(typeof(str));
1.string字符串
es5
字符串的不可变性:不会覆盖之前的值,会新开辟一个位置
+
的两端如果有一侧为字符串,会强制让两侧的内容都转换成字符串
另一个函数方法拼接
- * /
的两端如果有一侧为数字,则会将两侧转换成number
var str1 = str2.concat(str3,str4)
//str2+str3+str4
es6字符串模板量
var str = `bianLiang
Ming`; //可以直接使用回车键
var a = 5;
var str3 = `abcd${a}efgh}`//可以直接拼接
2.Boolean
true 和 false 两个值
3.number
var num =123;
Infinity 无限大
not a Number = NaN
console.log(Number.MAX_VALUE);
console.log(Number.MIN_VALUE);
var total = 0.1 +0.2; --0.300000004 //会产生精度丢失
var total = 0.555;
console.log(total.tofixed(2)); --0.56 //四舍五入,括号中为小数点后位数
4.null
null == === != 就不为0,其他情况就当成0
5.undefined
var nu1 = undefined;
出现undefined
1.定义某一个变量,但是并未赋值
var un1;
console.log(un1)
2.直接检测类型
console.log(typeof a)
3.函数内部,形式参数未传参
4.函数无返回值
console.log(null==undefined);--true
console.log(null===undefined);--false
最大的区别就是和数字加减时,null看成0,结果等于相加的数字;undefined相加数字,结果为NAN
查看赋值
var a = b = c = d = 10;
运行步骤
var a;
a = b = c = d = 10;
d = 10;
c = d;
b = c;
a = b;
二、基础数据辨别转换
typeof无法检测null和数组
判断是否为数组
console.log([1,2,3] instanceof Array);//如果是数组返回true 不是则false
console.log([1,2,3] instanceof Object);//也可以检测数组,因为数组属于对象
显式转换
1.其他类型转换成字符串
1. +
连接符 //在不同类型后面连接一个空串
var str1 = 123 + ‘’;
console.log(str1);
2.toString() //null和undefined不适用
var num = 123;
var str2 = num.toString();
console.log(str2);
可以进行进制转换
var num = 100;
var str2 = num.toString(2);
输出1100100 --对于number类型,toString()括号中的数字,代表转换成几进制
3.String()
var temp =123;
var str3 =string(temp);
console.log(str3);
//这三种方法转换对象类型,转换成字符串都会显示为object
2、其他类型转换成数字
1.number() //需要纯数字的字符串,或者科学计数法e
var temp = ‘124e21313’;
var num = number();
console.log(num);
2.parseInt() 3.parseFloat //字符串一定要以数字开头才能提取数字
var temp = ‘124dsgd’;
var num = parseInt();
console.log(num); --输出124
var temp = ‘dsgd124dfg’;
var num = parseInt();
console.log(num); --输出NaN
var temp = ‘105dsgd’;
var num = parseInt(temp,2);
console.log(num);//只取10
//原理 第一步调用tostring
//一定要注意第二个参数,是把提取的数当成对应的进制,再转换成十进制返回出来
//超出七位小数会通过科学计数法表示,提取整数时会识别小数后的第七位
3、其他的类型转换成boolean
var temp = ‘123’
var bool = Boolean(temp);
console.log(bool);
//字符串转换时,空串是false,其他情况都是true
var temp = 1;
var bool = Boolean(temp);
console.log(bool);
//number转换时,0是false,其他都是 ture
var temp = {};
var bool = Boolean(temp);
console.log(bool);
//object转换时,都为true(包含数组)因为对象中会存储地址
String number boolean 对应基础数据的包装类型
隐式转换
1.inNaN()
var temp =123;
var bool = isNaN(temp);
console.logaa(bool);//NaN的返回值为true
原理:其他的类型先调用number()方法,看是否能转化成数字
isNaN():是数字返回false;不是数字的时候返回ture
2.++自增 --自减
var temp =‘11’;
var temp2 = temp++;
console.log(temp);–>12
console.log(temp2);–>11
//++:变量在前先赋值再加,变量在后,先加再赋值
//–:变量在前先赋值再减,变量在后,先减再赋值
3. + 正号 -负号
var temp = true;
var temp2 = +temp;
console.log(temp2);–>1
4.- * / %
运算符
1.算数运算符 ±*/%
2.自增自减运算符++ –
3.一元运算符 ± typeof
4.逻辑运算符 && || !
&&并且 所有项都是true,则返回最后一个true值的原始值
如果其中的遇到的值为false,则输出false,后面的值不再执行
|| 或 所有项都是false执行到最后,输出false
如果其中的遇到的值为true,则输出true,后面的值不再执行
! 取反
5.赋值运算符 = += -= *= /= %=
var num = 1;
num+=1;
=>num=num+1;
//x==;
//=>x =number(x)+1
6.比较运算符> >= <= == === !==
错误的写法
if(10<num<13)//14满足,满足其中一个条件即可
正确的写法
if(10<num&&num<13);//14不满足
==:值相等返回ture
===:全等,值相等,类型也要相等
引用类型 == ===先去调用tostring()
!的优先级比tostring()的要高
7.三元运算符
表达式?表示1:表示式2