JavaScript初识(三)

  • 运算符

1、JS基础----算数运算符

取余%

取余的结果的正负值只和被除数的正负号有关,和除数的政府没有关系

一般尽量避免给小数求余,因为js编译器的精确度没有其他编译器那么精密

自增>前自增    ++a   >  后自增    a++(自减同理)

变量a的前自增,变量本身先自增,然后再将结果赋予到当前位置;

变量a的后自增,变量的值先赋予当前位置,然后变量自身在进行自增

//例:
var a = 4, b = 3;
var c = (a++ + ++b + b-- + --a)%5;
console.log(a);//a = 4
console.log(b);//b = 3
console.log(c);//c = 1
加号的另一种用法,如果加号的两侧,有一个是字符串,则结果是字符串的拼接

var a = 1;
console.log("a的结果是"+a);
//a的结果是1
Math.round()四舍五入

var a = 9,b = 7;
var c = Math.round(a/b);
console.log(c)
//1
parseInt:将字符串转换成整数,对从字符串左侧一次查找数值,直到碰到非数值的字符结束

var a = '128';
var b = parseInt(a);
console.log(typeof b);
//number
parseFloat:会转遇到的第一个的小数点,如果第一个小数点在第一个位置,默认加一个0

浮点数:即就是带有小数点的数

例:

var a = ".125.24";
var b = parseFloat(a);
console.log(b);
//0.125

当结果返回NaN:not a number代表不能将这个转换成正常的数字类型,这个返回值是number类型

总结:parseInt和parseFloat的区别

1)、parseInt和parseFloat会按照顺序一个个转字符串中的字符,直到碰到不能转为数字的字符为止,如果第一个字符就转不成数字,则输出NaN;

2)、parseInt认为小数点不能转,parseFloat会转遇到的第一个小数点;

3)、Number对整个字符串进行转换,根据有没有包含一个小数点来选择转换为整形还是浮点型,有任意字符不能转换时返回NaN

.toString(x);转换为x进制

.toFixed(x);保留到小数点后几位

  • 赋值运算:+=、-=、*=、/=、%=
a+=b      即就是 a = a+b;

a-=b       即就是a =  a-b;

其他的赋值运算符同理

  • 关系运算符:返回值是布尔值>、<、>=、<=、!=

var a = 7,b = 6;
var c = a>b;
console.log(c);
//true
  • ==和===

区别:

===:

1、如果类型不同,就不相等;

2、如果两个都是数值,并且是同一个值,那么相等;

3、如果两个都是字符串,每个位置的字符都一样,那么相等,否则不相等;

4、如果两个数都是true或者都是false,那么相等,否则不相等;

5、如果两个数都引用同一个对象或者函数,那么相等,否则不相等;

6、如果两个值都是null或者都是undefined,那么相等


 ==:

1、如果两个值类型相等,那么进行===比较

2、如果两个值类型不同,他们可能相等,根据下面规则进行类型转换再比较

         a、如果一个是null,一个是undefined,那么相等;

null == undefined

     null == false

            undefined == false

b、如果一个是字符串,一个是数值,把字符串转化成数值再比较;

c、如果任一值是true,把它转化成1再比较,如果任一值是false,把它转化成0再比较;

        d、任何其他组合都不想等

var a = 5,b = '5';
console.log(a==b);//true
console.log(a===b);//false
引用数据类型的判断,看两侧的变量是否为同一个对象,是则是true,不是则为false

var a = {},b = {};
console.log(a==b);//false
console.log(a===b);//false
var a = {},b = a;
console.log(a == b);//true
console.log(a === b);//true


逻辑运算符:&&、||、 !(与、或、非) false代表的数值就是0,其他的都是true

&&:只有全部的表达式都为真才返回true,否则返回false;

||:至少有一个是真则返回值是true,全部为假返回false;

!:表达式为真则返回false,表达式为假则返回true

var a = !6<7;//!6的优先级最高先执行这个结果为false,隐式转换为数值则是0,返回a就是true
alert(a);
//true
三目运算符:表达式1>表达式2?结果1:结果2


运算符的优先级

. [] ():字段访问、数组下标、函数调用以及表达式分组

++、--、!、delete、new、typeof

*、/、%

+、-、+ 加、减、字符串连接

关系运算符、instanceof(判断某个对象是否是某个类的一个实例)

逻辑运算符

赋值运算符

()作用:可以表达式分组、改变运算符的优先级、函数调用。

new运算符:用来创建对象。

  • 强制转换

Number()强制返回数值类型

传进去的是布尔值,true返回为1,false返回为0;

传进去的是null返回0;

传进去是undefined返回NaN;

检测一个数字返回的是不是NaN不能用NaN == NaN来判断

只能用一个函数isNaN()来判断

将对象转换为数值的时候

当传进去的是一个对象(object)的时候,返回值是NaN,这个过程比较复杂,需要先调用valueOf:function(){},如果valueOf返回是一个基本数据类型时,Number会对其进行转整操作;如果返回值还是一个函数的时候,调用toString:function(){},如果这个函数还不能返回基本数据类型的时候,会报错!!!(两个方法的返回值相同)

var obj = {
    valueOf:function(){
        return{};
    }
    toString:function(){
        return{};
    }
};
document.write(Number(obj));
string函数:将数据类型转换为字符串类型

alert(String(123));//'123'
alert(String(true));//'true'
alert(String(null));//'null'
alert(String(undefined));//'undefined'

var obj = {
    valueOf:function(){
        return{};
    }
    toString:function(){
        return{};
    }
};
document.write(Number(obj));
将对象转换为字符串类型当传进去的是一个对象(object)的时候,返回值是NaN,这个过程比较复杂,需要先调用 toString:function(){},如果 toString :function(){},返回是一个基本数据类型时,Number会对其进行转整操作;如果返回值还是一个函数的时候,调用valueOf:function(){},如果这个函数还不能返回基本数据类型的时候,会报错!!!
解决方案就是将返回值直接改为基本的数据类型
var obj = {
    toString:function(){
        return{};
    }
    valueOf:function(){
        return{};
    }
};
document.write(Number(obj));

参数为原始类型值转化为布尔类型

转换规则相对简单:除了以下六个值的转换结果为false,其他的值全部为true。

undefined、null、-0、0或+0、NaN、''(空字符串)

所有对象的转换结果都为true

  • 自动转换(隐式转换)
计算机在预编译的过程中自动进行转换

1、数字+字符串

var num = 1;
console.log(typeof("这个数字是"+1));//string//把数字1先转换为字符串,然后,再进行拼接。
结果是字符串类型

2、数字-字符串

var num = 75;
num = num-"2";//数字和字符串做减法,那么,字符串会转换成数字,
alert(num);//number
  • 进制的转换:二进制、八进制、十进制、十六进制

二进制:只有0和1

八进制:0打头,0-7

十进制:0-9的数字

十六进制(在编程语言中,十六进制以0x打头):逢十六进一;0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F;

parseInt(a,n)//第二个值表示指定第一个值是几进制的,最后结果都是10进制的

在js中输入一个八进制的数字时,会自动转换为十进制
如:alert(012);
 把十进制转换为八进制;

  var age = 25;
  //alert(age.toString(8));
  var str = age.toString(8);//把数字age转换为8进制数的字符串形式;
  alert(typeof str);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值