JavaScript基础知识(2)

    xiaoxiao2021-03-25  139

    Netscapt:javascript   Microsoft:JScript   变量:内存中存储数据的一块空间。一切数据必须存在变量中。   声明:var 变量名-->在内存中开辟一块空间   赋值:变量名=值-->将值保存到左边的变量空间中备用。   使用:使用变量名,等效于直接使用变量中的数据。   数据类型:   why:存储空间大小,用途   原始类型:数据保存在变量本地   复习:   number string Boolean undefined null   string:字符串内容一旦创建不能改变,要想改变只能创建新的字符串   正课:   数据类型间的转换:   隐式转换:程序自动转换数据类型(坑)   JavaScript是一种弱类型的程序语言体现在两个方面:   1.变量声明时不必限定数据类型,今后可能保存任何类型数据   2.数据类型间可以自动类型转换   仅考虑+(两种情况):   1.只要有字符串参与,一切类型都加""变为字符串   2.如果没有字符串,都转为数字计算:其中:true-->1   false-->0   var num1=1,num2=2;   var str="medusa";   var b1=true,b2=false;   console.log(str+num1);         //"medusa1"   console.log(str+b1);           //"medusatrue"   console.log(num1+num2+str);    //"3medusa"   console.log(str+num1+num2);   //"medusa12"   console.log("b1+b2="+(b1+b2));   //" b1+b2=1"   console.log("b1+num2="+(b1+num2));   //"b1+num2=3 "   强制转换:程序员通过调用专门函数手动转换类型   String: x.toString()  -->将x转为字符串类型,其中x可以为任何数据类型。   Number: Numer(x)  -->将任意类型转为number类型   string  --> number:           转为整数:var num=parseInt("str")           本质是读取字符串中的整数部分:             1.从第一个字符向后读;             2.如果碰到第一个数字字符,开始获取数字;               再次碰到不是数字的字符(包括小数点),停止读取。             3.如果开头碰到空格,忽略;             4.如果碰到的第一个非空格字符,不是数字,说明不能转  -->NaN:Not a Number   什么是NaN:不是数字(内容)的数字(类型)。   console.log(parseInt("   12px"));    //12   console.log(parseInt("true"));       //NaN   console.log(parseInt("22.5"));       //22   parseInt是不认小数点的,只能读小数点之前的数字   转为浮点数:var num=parseFloat(str)   本质是读取字符串中浮点数部分   用法和parseInt完全相同。唯一差别:parseFloat认识小数点,仅认第一个小数点。parseFloat遇到小数时如果小数点前面没有0,会自动添加0;如果遇到小数点后面只有0,会自动输出一个整数不带小数点   console.log(parseFloat("22.5"));       //22.5   console.log(parseFloat("22.5.5"));     //22.5   console.log(parseFloat(".25"));       //0.25   console.log(parseFloat("22.0"));       //22   prompt("提示信息"):专门用于请求用户输入数据,收集数据的对话框。   var str=prompt("提示信息");   *凡是从页面上获得的数据,都是字符串!必须先转换再计算*   例:     <script>          var str=prompt("请输入工资");          var salary=parseInt(str)+1000;      //此处若用var salary=str+1000; 获得到的就是输入的字符串,输出的结果就是NaN          alert("您涨薪后工资为:"+salary);      </script>   只要计算结果返回NaN,就说明计算参数错了   总结(数据类型之间的转换):   string-->number:     Number(x)   boolean-->number:    Number(x)   number-->string:     x.toString()   boolean-->string:    x.toString()   number-->boolean:    Boolean(x)   string-->boolean:    Boolean(x) Number()的强制类型转换与parseInt()和parseFloat()方法的处理方式相似,只是它转换的是整个值,而不是部分值。parseInt()和parseFloat()方法只转换第一个无效字符之前的字符串。如“3.4.5”被转换成“3.4”, 

    parseInt可以转换parseInt("-280px"),结果是-280。 这个函数返回字符串前面的数字,忽略尾部的非数字部分。 parseInt("11eleven")结果是11 parseInt("eleven")结果是NaN parseInt("-11eleven")结果是-11

        Number是严格的,不允许任何非空格的字符。     Number("-280px")结果是NaN              Number("-280")结果是280       什么是运算符:程序模拟人类运算的特殊符号   算术运算符:+ - * / % ++ --   + 可以表示加法,也可以用于字符串的连接   - 可以表示减号,也可以表示负号(任意类型数据做减号,都会被转为数字类型;如果有参数,不能自动转为数字,则返回NaN)   除法运算:如果除数为0:Infinity(无穷大)   console.log(5/0);               //Infinity   console.log(0/0);               //NaN      console.log(type0f(5/0);        //number   type0f(x):判断任意数据的类型   %:取余数,也叫模运算,取得是除不尽的余数。限制一个数不能超过某个最大范围时,就可以用模运算。   递增/递减运算:   ++: i++ ==> i=i+1;只要遇到对变量+1,就用i++   i++单独用:++放前放后,效果一样:i++ ==> ++i   i++出现在表达式内部:前++是先+1,再参与表达式;后++,先用旧值参与表达式,表达式之后再+1   关系运算:>   什么是关系运算:判断关系大小!一般在条件判断中使用。   结果只有两个:成立:true;不成立:false   注意:关系运算自带隐式类型转换   字符串参与关系运算:从第一个字符开始,依次取出每个字符,PK Unicode编号   在关系运算中:任何类型(包括字符串)和数字比较,都转为数字,再比较;布尔类型参与关系运算,始终转为数字比较。   在关系运算中,等于要用==,不能用=   console.log(3>10);          //false   console.log('3'>'10');          //true   console.log('3'>10);          //false   console.log('10'==10);          //true   console.log('2'>true);          //true   console.log(2>true);          //true   在关系运算中:先将参与判断的数据,强转为相同类型,再比较。   undefined类型,是从null类型继承来的。但是undefined值在比较时会被自动转为null。即undefined做==比较时:即:undefined==null  ==>true   ===严格相等:不带自动类型转换的相等比较!既会比较类型,也会比较值,只要任何一个不相等都会返回false。   只要不确定比较的类型,又不希望自动类型转换时,就用===   console.log(undefined==null);      //true   console.log(typeof(undefined));      //undefined   console.log(typeof(null));      //object   console.log(undefined===null);      //false   NaN做等值比较==:NaN和任何数字作比较,永远返回false,即使和自己比较也返回false,即 NaN==NaN ==>false   isNaN(x):专门用来判断一个数据是否是NaN。如果是NaN返回true;如果不是NaN返回false。是数字返回false,如果不是数字返回true。只要不能自动转换为数字的,都返回true;只要能自动转为数字的,都返回false   console.log(isNaN(""));       //false    注:关系运算中"",可以自动转为0   console.log(isNaN(22.5));       //false    console.log(isNaN("10"));       //false    注:关系运算中,"10"可以自动转为10   console.log(isNaN("12px"));       //true   console.log(isNaN(true));       //false   console.log(isNaN("true"));       //true   注:关系运算中,true可以自动转为1,"true"不可以.字符串是不能自动转换为true的,但是布尔类型可以自动转换为数字   console.log(isNaN(NaN));       //true   console.log(isNaN("NaN"));       //true   注:上面这两个是有着本质区别的   关系运算总结:   1.普通数据,先转为相同类型,再比较   2.undefined,就用===   3.NaN,就用isNaN(x)   var temper=0;   var weather="雨";   var money=45;   var jacket=temper<-3;   //false   var umbrella=weather=="雨";  //true   var taxi=money>=45;   //true   console.log(jacket+" "+umbrella+" "+taxi);   //false true true   console.log(jacket+umbrella"+taxi);   //false true true   逻辑运算:基于多组关系运算,得出1个结论   &&:与运算,所有条件为true,才返回true;只有一个为false就返回false   ||:或运算,只要任意一个为true,就返回true;只有所有条件都为false时,才返回false   !:非运算,颠倒true和false,今后只要颠倒判断结果,就用!   var c=prompt("请输入一个字符:");   var isNumber=c>="0"&&c<="9";   var isAlphabet=(c>="A"&&c<="Z")||(c>="a"&&c<="z");   var isChiense=c>="\u4E00"&&c<="\u9FA5";    //注意,以后只要是验证字符是不是汉字就用这个来验证   console.log(isNumber+","+isAlphabet+","+isChiense);   var year=prompt("请输入年份:");   year=parseInt(year);   var isLeapYear=(year%4==0&&year0!=0)||(year@0==0); //闰年的判断公式记下   console.log("是闰年吗"+isLeapYear);    关于“短路逻辑”的问题:只要前一个判断足以得出最终结论,则后续条件不执行!   例一:   var i=10;   var j=10;   var k=i--<0&&j++>0;      console.log("k="+k+","+"i="+i+","+"j="+j);   //k=false,i=9,j=10   例二:   var i=10;   var j=10;   var k=i-->0||j++>0;      console.log("k="+k+","+"i="+i+","+"j="+j);     //k=true,i=9,j=10   位运算:将数字以二进制形式进行计算   位移:   左移:n<<m  ==>n*(2的m次方)   例3<<1 ==>3*(2的1次方)   3<<2 ==>3*(2的2次方)   3<<3 ==>3*(2的3次方)   右移:n>>m  ==>n/(2的m次方)   例64>>1 ==>64/(2的1次方)   64>>2 ==>64/(2的2次方)   64>>3 ==>64/(2的3次方)   总结:左移几位就乘几个2,右移几位就除以几个2   赋值运算:=用于为变量赋值。赋值运算的结果就是等号右边表达式的结果。   var x=y=z=10;    //赋值的结果就是右边表达式的值10,这种写法不推荐使用   扩展赋值表达式:(+=  -=  *=  /=  %=)一般是对已有数据计算同时,将结果再存回变量。一般在修改原变量值时使用。   += :  i+=5;等效于i=i+5;同理其他几个   字符连接运算:+ 运算   三目运算:根据不同条件,动态返回不同结果!三目运算返回的结果是一个值。   为什么是三目:至少需要三个表达式。console.log(变量=="条件"?"执行1":"执行2");   语法:条件?当条件满足时返回的值:当条件不满足时返回的值   例:   var ts="人";   var bgj="妖";   var who=ts;   console.log(who=="人" ?"放过":"杀掉");   例2:   var who=bgj;   var r=who=="人"?"放过":            who=="妖"?"杀掉":               "送到泰国";    //上述条件不满足,则送到泰国   console.log(r);   三目运算中,多个条件时,即多选一,语法如下:   条件1?条件1满足时的值:   条件2?条件2满足时的值:   条件n?条件n满足时的值:                  默认值;   三目运算应用:   需求1:2个数中取最大的   var score1=100;   var score2=80;   var result=score1>score2?score1:score2;   注意:后一个条件中不用包含否定前一个条件的关系判断。因为,进入后一个条件隐含的条件就是前一个条件不满足。   例:   var salary=parseInt(prompt("请输入工资"));   var c= salary>=20000?"土豪":          salary>=8000?"小资":                        "屌丝";   console.log(c);
    转载请注明原文地址: https://ju.6miu.com/read-9595.html

    最新回复(0)