java script 基础二

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java script 基础二相关的知识,希望对你有一定的参考价值。

    一.***数据类型转换:

       1. ***js是弱类型编程语言:3点:

            1.声明变量时,不用考虑变量中将要存储的数据类型

            2.赋值时,动态判断数据的类型,同一个变量,先后可保存不同类型的数据。

            3.运算时,js会根据自己的需要,动态转换数据类型

    2.大类:

        1.隐式转换:无需程序员干预,而自动完成的转换。

     先讨论算数运算中的隐式转换:        

                    规律:

                        1.默认情况下,一切转数字类型,做算数计算

                               boolean类型,true-->1  flase-->0

                         2.+法中,只要有一个字符串,都转为字符串,+变为字符串拼接

例:

var n1= 2,n2=3;
   
s1="2",s2="3",
       
b1=true,b2=false;
console.log(n1+n2);//5
console.log(s1+n2);//23
console.log(s2-n1);//1
console.log(s2-b1);//2
console.log(s1*b2);//0
console.log(b1+b2);//1
console.log(s1+b2);//2false

从左向右两两计算

console.log(n1+s2+b1);//23true
console.log(n1+b1+s2);//33

表达式:由数据,变量和运算符组成的公式

         *默认,从左向右,两两计算

         NaN:“不是一个数字”的数字,

         =Not a Number

      何时遇到:当无法转为数字时,或无法正常计算时,结果为NaN

      特点:和任何数据做计算,结果永远为NaN

            加法计算中,碰上字符串,也会被字符化“NaN”  

var s="Hello";
var
n=NaN;
   
console.log(s-n);

-->结果为NaN

            

        typeof(x);返回x的数据类型名称:Number String Boolean Undefined   


    2.强制转换:程序员主动调用专门的函数完成的转换

            1.任意 to String:2种:

                var str=x.string();

                var str=String(x); -->相当于隐式转换

            区别:***String(x); 万能方法;

            x.string();对于null和undefinded转不了

            何时使用:通常都是js在需要时,自动调用;


            2.***任意 to Number :3种:

                1.任意 to Number:var n=Number(x); --隐式

                    何时使用:将非字串类型转为数字类型时使用

                                    将纯字符串组成的字符串转为数字类型时

            特例:Number(" ") -->0


                2.String to Number:

                    1. to 整数:var  n= parselnt(String(str));

                            何时使用:将*字符串*转为整数时使用

                            如果传人的不是字符串,则先隐式转为String

                            原理:从头开始读取字符串中每个字符,跳过开头的空字符,只读取数字字符,只要碰到第一个不是数字的字符,就退出;不认识小数点。

console.log(parseInt("12px"));//12
console.log(parseInt("1 2px"));//1
console.log(parseInt("12.5px"));//12
console.log(parseInt("$12"));//NaN
console.log(parseInt(true));//NaN
console.log(parseInt("true"));//NaN

                      对比:Number(x)  vs  pareslnt(str)

                Number只认识纯数字组成的数字串,可转Bool类型

                pareslnt(str)认识包含非数字字符的字符串开头位置的数字,无法转换Bool类型


                    2.String to 浮点数:var n=parseFloat(str);

                        何时使用:只要将字符串转为小数时,用法和parselnt用法完全一样,之刃第一个碰到的小数点。


                    3.任意类型 to Boolean: var Bool=Boolean(x);

                    " " 0 NaN underfined null  --> false

                    其他都是true

         

    3.运算符和表达式:(隐式转换,默认都转为number);

        程序:人的想法在计算机中的执行步骤

        运算符:程序中模拟人的思维运算或判断的符号

        表达式:由数据,变量,和运算符组成的公式


        算数运算符:+ - * % ++ --

            %模运算(取余数):m%n:m/n,取 除不尽的余数部分

            何时:

                    1.判断能否整除:

                    比如:判断奇偶数:m%2等于0,说明m是偶数;m%2不等于0,说明m是奇数;

                    2.限制计算结果,永远小于除数;

         ***递增,递减运算:++ --

                n++:n=n+1;将n中的值+1,再保存回n中

            2种情况:

            ++n:前++,先将n中的值+1,返回*新*值

            n++:后++,将n中的值+1,返回*旧*值

            ++n或n++,单独使用,无影响;

            但是参与其他表达式中时,会影响执行结果:

var my=10;
var
lp=my++;
console.log(lp);//10
console.log(my);//11
var lp=++my;
console.log(lp);//11
console.log(my);//11

笔试题:

var n=3;
console.log(n++ + ++n + n++);//从左往右依次相加,n值页进行累计 3+5+5=13
console.log(++n +n++ + ++n);//从左往右依次,7+7+9=23
console.log(n);//9

        ***运算关系:做比较,比大小 --> >< <= <= != ==都带有隐式转换

        返回值:true false

        隐式转换:默认都转为数字再比较

        特殊情况:

            1.如果无法转为数字:转为NaN

                NaN不等于,不大于,不小于任何值,甚至自己 -->NaN!=x -->true

                isNaN(num):专门判断一个num数值是否为NaN;如果是NaN,就返回true;否则返回false

               何时使用:只要判断一个数值无效,就用isNaN

                开发中何时使用:反着用

                    用isNaN判断一个num是不是数字,或是否能被隐式转为数字使用

                isNaN(num):返回true -->num是数字

                                   返回false -->num不是数字


            2.比较

                undefined  vs  null

                underfined:所有变量的默认初始值,自动赋值

                null:主动清空一个变量,释放一个对象

            例:

                var n;var m=null;console.log(n==m); -->true

                var n;var m=null;console.log(n===m); -->false

                typeof(undefined)   -->underfined

                typeof(null)      -->object

                ===:全等,严格相等,首先类型必须相同,其次值相同

            何时使用:要求类型相同,且值相等


           3.如果参加比较的两个值都是字符串类型,不再转数字,而是pk每个字符的unicode号


            (怎么判断中午的unicode)“李”.charCodeAT(0)

            凡是条件:一般都是关系运算或逻辑运算

    

   ****逻辑运算:多个条件(关系运算),综合得出最后的结论,只能返回true/false

   隐式转换:默认转换为bool类型:boolean(x)  null NaN underfined 0 " "空 转换为false

   何时使用:只要综合多个条件,得出最终结论

   如何使用:3种:

    &&:读作且,程序中称之为“逻辑与”

       条件1&&条件2:必须条件1和条件2都为true,结果才为true,只要任意一个为false,结果就为false

    ||:读作或,程序中称之为“逻辑或”

       条件1||条件2只要:任意一个条件为true,结果就为true,只有所有条件都为false,结果才为false

    !:读作不,程序中称之为“逻辑非”

       !条件:颠倒条件的true或者false的结果


使用套路:

    ***短路逻辑:逻辑运算中,如果前一个条件已经可以得出结论,则后续所有条件不再执行

    ***利用短路逻辑实现按条件执行语句:条件&&操作:如果条件满足,则执行操作;否则,什么也不做 

     逻辑与: 1个条件,1件事,满足就做,不满足就不做

  逻辑或:值1||2:如果值1有效,就返回值1,否则返回值2

笔试题:                                                                    

4&&5;//5
4||5;//4
0&&5;//0
0||5;//5

何时使用:1个条件,1件事,满足就做,不满足就不做

var total=400;
   
total>=500&&(total=total*0.8);
   
console.log("实际收款:"+total);

利用逻辑或实现默认值效果,或者实现二选一取值效果:

    1||2:如果值1有效,就返回值1,否则返回值2

var reply=prompt("请用户输入回复");
console.log(reply||"主人很懒");

    

    (了解即可)位运算:将数值的二进制左移或者右移n位

        左移n位:相当于*2的n次方

        右移n位:相当于/2的n次方


    *赋值运算:基本赋值运算:=

        所有表达式都会返回一个结果

        ***赋值运算的结果,是等号右侧表达式的值

        

    (扩展)赋值运算:对变量内部的值进行修改的简写方法

        比如:total=total*0.8 --> total*=0.8

        何时使用扩展赋值运算:需要修改变量中的值,再存回变量中

        包括:+=   -=  *=   /=   %=   用法完全一样


    ***三目运算:根据不同条件,判断执行不同操作,或返回不同的值

    三目运算 即 条件运算

    何时使用:多个条件,多件事,必须多选一执行

    如何使用:

            条件1?操作1:

            条件2?操作2:

             more?more。。。。

            特点:

                1.如果前一个条件已经满足,则不再向下判断,保证每次只能有一个操作被执行


           






















以上是关于java script 基础二的主要内容,如果未能解决你的问题,请参考以下文章

C零基础视频-26-身份证号校验程序

php生成各种验证码

Java基础:封装

为什么二代测序的原始数据中会出现Read重复现象?

二代身份证号码编码规则

Android 逆向加壳技术简介 ( 动态加载 | 第一代加壳技术 - DEX 整体加固 | 第二代加壳技术 - 函数抽取 | 第三代加壳技术 - VMP / Dex2C | 动态库加壳技术 )