前端学习第五周-js基础,定义变量,数据类型,基础数据的显式转换和隐式转换,以及运算符


前言

这周花了三天时间写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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值