js笔记——运算符、语句、typeof、类型转换

js中的运算符

比较运算符:">"、"<"、"=="、">="、"<="、"!="
  • 返回值为boolean值
  • 在"=="中的特例:NaN == NaN为false
逻辑运算符:"&&"、"||"、"!"
  • 运算结果为真实值
  • “&&”:先看第一个表达式转换成布尔值的结果,如果结果为真,那么他会看第二个表达式转换为布尔值的结果,然后如果只有一个表达式的话,只看第二个表达式,就可以返回该表达式的值了;如果第一个表达式为假,则不执行第二个表达式。多个表达式同理(为真往后走,遇到假就停止)
    例如:var a=1 && 2;此时a=2,因为1转换为布尔值后为真,看第二个表达式,运算结果为2,于是结果为2.
    应用:不关注返回值,可以当做条件判断来用:(如下,条件成立就打印hello)
    2 > 1 && document.write('hello');

常用场景:后端向前端传输数据的时候,常用data && fun(data);表示如果数据不为空才执行下面的函数

  • “||”:和"&&"相反,遇到真返回,遇到假继续。应用场景:var a = e || window.event;表示如果e有值就直接返回e如果没有值就往下看。
  • “!”:先将表达式转换为布尔值,然后再取反,返回值为布尔值。
被认定为false的值:undefined、null、NaN、""、0、false

js中的条件语句和循环语句(基本和java类似)

条件语句:if…else…、if…else if…else…
循环语句:for语句、while语句、do…while…语句(基本不用)
switch语句与java不同,case后面可以是数字、字符串、布尔值或者其他变量(即可以是引用值)
class Person {
    constructor(name) {
        this.name = name;
    }
}
var p = new Person('xiaoming');
switch (p) {
    case new Person('xiaohong'):
        console.log('xiaohong');
        break;
    case p:
        console.log('xiaoming');
        break;
    default:
        console.log("default");
}//控制台打印:xiaoming
break和continue的用法

数组和对象初探

数组:储存数据的仓库

var arr = [1, 2, 3, 4, "abc", undefined];
console.log(arr.length); //6   表示数组的长度
console.log(arr[0]); //1    访问数组中元素
arr[0] = "change";
console.log(arr[0]); //change   修改数组中元素
//遍历数组
for (var i = 0; i < arr.length; i++) {
    console.log(arr[i]);
}

对象:由属性名和属性值组成

  • 属性名(key)可以加双引号也可以不加双引号
var peo={
    name:'xiaoming',
    age:40,
    id:'0123',
    isHandsome:true
}//定义对象
console.log(peo.name);// xiaoming   取出对象的属性
peo.name="kangkang";//修改属性
console.log(peo.name);//kangkang 

typeof操作符:返回数据的类型

var a=123;
console.log(typeof(a));//number

1.六种数据类型:number、string、boolean、undefined、object、function

2.typeof的返回值为:number、string、boolean、object、undefined、function(注意:返回值都是string类型)

  • 注意:返回object类型的不一定就是对象,例如typeof([1,2,3]),typeof(null)也会返object,这里表示的是引用类型。
  • typeof()也可以写成typeof+空格+数据类型

3.js的类型转换

显式类型转换
  • Number():将其他类型转换为数字类型
console.log(Number('123'));//123
console.log(Number(true));//1
console.log(Number(false));//0
console.log(Number(null));//0
console.log(Number(undefined));//NaN
console.log(Number('a'));//NaN
console.log(Number('abc123'));//NaN
console.log(Number('123abc'));//NaN
  • parseInt():将数据转换为整形,遇到小数直接去掉小数位
console.log(parseInt('123'));//123
console.log(parseInt('123.9'));//123
console.log(parseInt(true));//NaN
console.log(parseInt(false));//NaN
console.log(parseInt(null));//NaN
console.log(parseInt(undefined));//NaN
console.log(parseInt('a'));//NaN
console.log(parseInt('abc123'));//NaN
console.log(parseInt('123abc'));//123     parseInt会从数字位开始,一直到非数字位再返回
//parseInt()可以接受两个参数,第二个参数表示将目标对象当成几进制来转换为十进制
var demo='10';
console.log(parseInt(demo,16));//16   把'10'当做16进制来转换

应用:parseInt(‘100px’);可用来取出像素的数值

  • parseFloat():将数据转化为浮点数
  • String():将数据转化为字符串
  • Boolean():将数据转化为布尔值
  • toString():将数据转换为字符串,但是undefined和null不能用toString(),它和String()的区别在于:
var demo = 123;
console.log(demo.toString());//123
console.log(String(demo));//123
//带参数的toString(),参数表示转化为几进制
var a=10;
console.log(a.toString(8));//12    表示将10转化为八进制
隐式转换
  1. isNaN():判断是不是NaN
    原理:先用函数Number()将参数进行转换,将返回值在与NaN比较
console.log(isNaN('123'));//false
console.log(isNaN('abc'));//true
  1. ++/-- +/-(一元正负)
    原理:内部先调用Number()方法将其转化为number类型
var a = '123';
a++;
console.log(a);//124
var a = 'abc';
a++;
console.log(a);//NaN
var a = 'abc';
console.log(+a);//NaN
console.log(-a);//NaN
console.log(typeof (+a));//number
console.log(typeof (-a));//number
  1. 加号:+
    原理:两边只要有一个string类型就将另一个转化为string类型
  2. -*/%
    原理:同样先调用Number()函数来转换,再进行计算
console.log('1' * 1); //1
console.log('1' - 1); //0
console.log('a' - 1); //NaN
  1. && || !
    原理:调用Boolean()进行类型转换
  2. > < >= <=
    原理:有数字进行比较就隐式转换为数字(调用Number()方法),字符串会逐个比较ACSII码
console.log('3' > 1); //true
var a = '3' > '2';
console.log(a);//true
console.log(typeof(a));//boolean
  1. == !=
    原理:和数字比较的时候同样会进行隐式类型转换
console.log(1 == '1'); //true
console.log(1 == true); //true

特例:

console.log(undefined > 0);//false
console.log(undefined < 0);//false
console.log(undefined == 0);//false
console.log(null > 0);//false
console.log(null < 0);//false
console.log(null == 0);//false
console.log(undefined == null);//true
console.log(NaN == NaN);//false
不发生隐式转换
  • === !==
console.log(1 === 1); //true
console.log(1 === '1'); //false
console.log(NaN === NaN); //false

练习:

console.log(false < true); //true       转化为0<1
console.log(2 > 1 > 0); //true     先算2>1返回1,1在与0比较
console.log(typeof(a));//undefined     a未定义
console.log(typeof(typeof(a)));//string     typeof()函数的返回值为string
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值