JavaScript_day03

day03内容

学习目标
0.typeof关键字
1.操作符
2.类型转换

  1. typeof 关键字
    返回该变量名所指向数据的类型
    语法:
    typeof 变量名
    可有取值如下
    “undefined” 未定义
    “boolean” 布尔类型
    “string” 字符串
    “number” 数值
    “object” 对象或者null
    “function” 函数
  1. 类型转换
    1. 其他数据类型到Boolean类型转换
      通过Boolean() 函数转换

      【Boolean true false】
      String 非空字符串 “”
      Number 任何非0 0和NaN
      Object 任何对象 null
      Undefined n/a undefined (n/a not applicable 不适用)
      例如:
      Boolean(""); //false
      Boolean(0); //false
      Boolean(NaN); //false
      Boolean(null) //false
      Boolean(undefined) //false
      Boolean(“briup”); //true
      Boolean(1); //true

    2. 其他数据类型到数值类型转换
      1.Number()
      1) 如果转换的值是null,undefined,boolean,number
      Number(true); //1
      Number(false); //0
      Number(null); //0
      Number(undefined); //NaN
      Number(10); //10 如果是数字值,原样输出
      2) 如果是字符串:
      Number(“123”); //如果仅包含数值,转换为对应的数值
      Number(“234.1”);//解析为对应的小数
      Number("+12.1");//首位为符号位,其余为为数值,转换为对应的数值
      NUmber(“1+2.3”);//NaN 符号位出现在其他位置,解析为NaN
      Number(“0xa”); //如果仅包含十六进制格式,转为为对应的十进制的值
      Number(“010”); //【注意!】不会当做八进制被解析,结果为10
      Number(""); //空字符串被转换为0
      Number(“123ac”);//包含其他字符: NaN
      Number(" 12"); //12
      2.parseInt()
      1) 如果转换的值是null,undefined,boolean,number
      parseInt(true); //NaN
      parseInt(false); //NaN
      parseInt(null); //NaN
      parseInt(undefined);//NaN
      parseInt(10); //10 如果是整数值,原样输出
      parseInt(10.3); //10 如果是小数,舍去小数点一级后面的内容
      2) 如果是字符串:
      parseInt(“123”); //123;如果仅包含数值,转换为对应的数值
      parseInt(“234.1”);//234;小数点后面的数值省略
      parseInt("+12.1");//12; 首位为符号位,其余为为数值,转换为整数
      parseInt(“0xa”); //10; 如果仅包含十六进制格式,转为为对应的十进制的值
      parseInt(“010”); //10; 【注意!】不会当做八进制被解析,结果为10
      parseInt(""); //NaN;空字符串被转换为NaN
      parseInt(“1+2.3”);//1; 如果首位为数值,依次向后解析,找到连续的数值,直到遇到第一个非数值的,将之前获取的数值转换为Number返回
      parseInt(“123ac”);//123;
      3.parseFloat()
      与parseInt() 类似,但是也有不同:
      1.字符串中的第一个小数点是有效的,而第二个小数点则无效其后的内容会被省略
      2.始终忽略前导0
      parseFloat(“22.3.4”) //22.3
      parseFloat(“022.34”); //22.34

    3. 其他数据类型到字符串类型转换

      1. toString()函数
        默认情况下,toString()是以十进制格式返回数值的字符串表示,通过传递参数,可以输入以二进制,八进制,十六进制乃至任意有效进制格式的字符串值
        var num = 10;
        num.toString(); “10”
        num.toString(2); “1010”
        num.toString(8); “12”
        num.toString(16); “a”
        但是null ,undefined 没有toString() 方法
        null.toString() //报错 TypeError: null has no properties
        undefined.toString(); //报错 TypeError: undefined has no properties
      2. String() 构造函数
        String(null) “null”
        String(undefined); “undefined”

2,操作符
01) 一元操作符
++,–,+,-操作符应用任何类型数值都返回一个【数值类型】,先将任意类型的值转换为Number然后进行运算(通过Number()方法进行转换)
1.递增 ++
var a = “11”;
1+a++;
1+ ++a;
前置:操作该变量之前进行递增或者递减操作
后置:操作该变量之后进行递增或者递减操作
对任意数据类型的操作数都适用,使用前先将其转换为数字(Number()),然后再进行运算,在应用于对象的时候,优先先调用对象的valueOf方法,以取得一个可供操作的值,如果子类对象仅重写了toString(),调用该方法。
2.递减 –
前置:操作该变量之前进行递增或者递减操作
后置:操作该变量之后进行递增或者递减操作
对任意数据类型的操作数都适用,使用前先将其转换为数字,然后再进行运算在应用于对象的时候,先调用对象的valueOf方法,以取得一个可供操作的值,如果子类对象仅重写了toString(),调用该方法。
3.加 +
相当于调用Number();
var a = “12”
+a ; // 12 相当于调用了Number(“12”)
4.减 -
将一元减应用于数值时,数值会变成负数。
将一元减应用于非数值时,遵循与一元加操作符相同的规则,最后将得到的数值转化为负数
02) 布尔操作符, 非(NOT)
逻辑非 !
该操作符应用任何类型数值都返回一个【布尔值】。先将任意类型的数值转换为Boolean,然后取反,
!a ==> !Boolean(a)
!0 //true
!"" //true
!NaN //true
!false //true
连用两次逻辑非 ,就可以将任意数据类型转化为Boolean类型,!!a ==> Boolean(a)
!!"" //false
03) 逻辑与 && (同真才真,有假则假) 也被称为短路语句
可应用于任意数值。如果有一个操作数不是布尔类型,逻辑与就不一定返回boolean类型
1.如果第一个操作数是
null,NaN,undefined,false,0,"“可被转换为false的值的时候返回该值
2.如果第一个数其他,返回第二个数
var s1 = 8;
var s2 = “briup”;
var s3 = “”;
var result = s1 && s2; //briup
var result2 = s3 && s2; //空字符串
04) 逻辑或 ||(有真则真,同假才假)
false ||
如果两个操作数都是null,NaN,undefined,false,0,”“可被转换为false的值的时候返回该值
如果第一个操作数是null,NaN,undefined,false,0,”" 则返回第二个操作数
05) 加性操作符
1. 加法 +
m + n
1) 当m,n不为String,Object类型的时候,先将m,n转换为Number类型,然后再进行计算
true + false; //1;Number(true)+Number(false);
true + 1; //2;Number(true) + 1
null + undefined; //NaN;Number(undefined) -> NaN
2) 当m,n有一个为String,无论另一个操作数为何(但不为对象)都要转换为String,然后再进行拼接
“1” + true; // 1true
“1” + undefined;// 1undefined
“1” + 1; // 11
3) 当m,n 有一个为对象,如果该对象既重写toString,又重写了valueOf方法,先调用valueOf方法获取返回值,将该返回值和另外一个操作数进行运算。如果该对象没有重写valueOf方法,将调用toString方法获取返回值,将该返回值和另外一个操作数进行运算。
var o = {
name:“briup”,
valueOf:function(){
return “1”;
}
}
o+1; //2;o+1
2. 减法 -
返回值为【数值类型】。无论操作数为任何类型,先将其使用Number()转换器转换为Number类型,然后再计算。
true - 1; //0; 1-1
null - true; //-1 ; 0-1
1 - undefined //NaN
var o = {
name:“briup”,
valueOf:function(){
return 1;
}
}
o-1; //0; 1-1
06) 乘性操作符
返回值为【数值类型】当操作数为非数值的时候执行自动的类型转化Number()
1. 乘法 *
如果两个数都是数值,执行常规的乘法计算
如果一个操作数是NaN,结果为NaN
超过数值范围返回Infinity
如果有一个操作数不是数值,则先调用Number()将其转换为数值。
2. 除法 /
如果一个操作数是NaN,结果为NaN (0/0 ; NaN)
一个非0值除0 Infinity
如果有一个操作数不是数值,则先调用Number()将其转换为数值。
var s1 = 5;
var s2 = 2;
var result = s1/s2; //2.5
3. 取余 %
如果两个数都是数值,执行常规的取余计算
如果一个操作数是NaN,结果为NaN(任意数%0 ; NaN)
如果有一个操作数不是数值,则先调用Number()将其转换为数值。
07) 关系操作符
< > <= >= ,返回一个【Boolean】值
1.如果两个操作数是字符串,比较字符串中对应位置的每个字符的字符编码值
“a”>“b” //false
“1”>“a” //false
2.如果一个操作数是数值,将另外一个操作数也转换为数值进行比较
“3”>1; //true
3>true; //true 3>Number(true)
3>undefined; //false Number(undefined)=NaN ;任何数和NaN比较结果都为false
3.如果一个操作数是对象,先调用valueOf(),再调用toString()将返回值与另外一个操作数比较,如果没有重写toString() valueOf()则始终为false
var o = {
name:“briup”,
valueOf:function(){
return “13”;
}
}
o>2 // true ; “13”>2
08) 相等操作符,返回【Boolean】
1.相等和不相等 ==, != (先转换在比较)
1)Number类型与boolean类型,比较前先将Boolean转换为数值。
2)Number类型与字符串类型,比较前先将字符串转换为数值
3)Number类型与undefined类型,结果为 false
4)Number类型与null类型,结果为 false
5)如果两个都是字符串,比较字符序列
6)如果两个都是对象,比较的是对象的引用地址
7)null == undefined //true
8)NaN与任何值(包括NaN)比较结果都为false
如果两个数都为对象,则比较他们是不是同一个对象,如果两个操作数都指向同一个对象,返回true
如果一个数是对象,另外一个数不是,则调用valuesOf()方法,用得到的基本数据类型进行比较
2.全等和不全等
仅比较不转换,先比较两个数所属的数据类型,如果类型不同则不同,如果类型相同,再继续比较两个数的值
console.log(“55” == 55); true
console.log(“55” === 55);false
null == undifined; //true
null === undifined; //false
09) 三目运算符 ? :
variable = boolean_expression ? true_value : false_value;
如果boolean_expression为true,将true_value赋给variable,否则将false_value赋给variable
例如:求任意两个数之间最大值
function max(m,n){
return m>n?m:n; //如果m>n为true返回m,如果m>n为false,返回n
}
10) 赋值运算符 =
将右侧的值赋给左侧的变量
可以和其他算术运算符连用 *= /= %= += -=
var a = 4;
a = 3; //=> a = a3;
11) 逗号操作符
可以在一条语句中执行多个操作
var num1=1,num2 = 2, num3 = 3;

note

复习
5种基本数据类型
undefined
null
boolean
number
string
1种引用数据类型
Object类型
var obj = {
name:‘zhangsan’,
age:12,
key:‘test’
}
访问obj的属性
1.点表示法
obj.name
obj.age
2.中括号表示法
obj[‘name’]
obj[‘age’]
var key = ‘name’;
obj[key] //zhangsan

                obj['key']    //跟key变量是没有关系的,直接访问的是obj对象中的key属性。test
                obj.key  //test
    Array类型(直接或者间接继承自Object类型)
        var  arr  =  [3,4,5,true,{},{},[[6,7],2]];
        arr.length属性获取数组的元素个数,数组的长度
        访问数组的元素
            arr[index]
                index是索引,是下标,从0开始,到arr.length-1结束
                arr[3]    //true
                arr[6][0][1]        //7

    Function类型(直接或者间接继承自Object类型)
        声明函数
            function  test(a,b){}
        运行函数
            test(1,2)
typeof关键字
    返回值    
        undefined          undefined类型
        boolean              true/false
        number                1,2,3,NaN,Infinity...
        string                ''    ""    'hello'
        object                null  {}  []
        function            function(){}

操作符
算术运算符
+ - * / %
递增递减
++ –
后置++ – 先使用,后++ – a++
前置++ – 先++ --,再使用 ++a
赋值运算符
= 将等号右边的赋值给等号左边的
+= a+=2
-= a-=2
= a=2
/= a/=2
%= a%=2
一元运算符 + -
将其他数据类型转成number数据类型
比较运算符
== === != !== < <= > >=

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值