js02

数据类型

1   数据类型划分
四种: 字符串     数字      布尔       未定义        空
String    Number   Boolean  undefined    null
复杂数据类型(引用类型)
Object、function、Array、Date、RegExp、Error.......
    字面量
固定的值,让你从“字面上”理解其含义。
数值字面量
var age = 18;  // 数值字面量,18为字面值
    简单数据类型介绍

Number

1.进制
  进制包括2进制、8进制(011)、10进制、16进制(0xA)、32进制等....
2.浮点数
因为精度丢失问题,所以不判断计算后的两个浮点数是否相等。
3.数值范围
       由于内存的限制,ECMAScript 并不能保存世界上所有的数值
最小值:Number.MIN_VALUE,这个值为: 5e-324
最大值:Number.MAX_VALUE,这个值为: 1.7976931348623157e+308
无穷大:Infinity
无穷小:-Infinity
4.NaN
            a) NaN 非数值(Not a Number的简写)
console.log(“abc”/18);  //结果是NaN
Undefined和任何数值计算为NaN;
NaN 与任何值都不相等,包括 NaN 本身
b) isNaN() :任何不能被转换为数值的值都会导致这个函数返回 true 
(isNaN译为是否符合一个标准,什么标准呢?不是一个数字的标   准,如果符合了那么就不是一个数字,不符合就是一个数字)
isNaN(NaN);// true
isNaN(“blue”); // true
isNaN(123); // false

String

1.字面量定义方式
用引号时,可单可双,唯独不可一单一双。可用.length看有几个字符。
var name = "zhangsan";
var name = 'zhangsan';
var name = 'zhangsan"; //错误,单引号和双引号要成对出现
2.转译
总结:无法输出的字符,先输出/,在输出字符。(“、\、换行等....)
3.字符串不可变
    在内存中不会立刻消失,只能二次赋值,原有的字符在一定时间    内被  垃圾回收器回收。
4.字符串拼接
如果两个变量都是字符串,无论是否包含数字,只要是拼接,那么在前一个后面添加后一个字符串。(+与-情况不同,详情参考数据转换)

Booblean

1.Boolean类型有两个字面量:true和false,区分大小写。(大写不对)
虽然Boolean 类型的字面值只有两个,但 ECMAScript 中所有类型的值都有与这两个 Boolean 值等价的值
2.true
true、除0数字、“something”、Object(任何对象)为true
3.false
false、0 、“”、undefined 、null为false
4.if判断时会把()内的值强行转换成boolean类型。

undefined和null

null和undefined有最大的相似性。看看null == undefined的结果(true)也就更加能说明这点。但是null ===undefined的结果(false)。不过相似归相似,还是有区别的,就是和数字运算时,10 + null结果为:10;10 + undefined结果为:NaN。
任何数据类型和undefined运算都是NaN;
任何值和null运算,null可看做0运算。

数据类型转换

任何简单类型转换成String(三种方法)

1变量+“”   或者     变量+“abc”
2   String(变量)
3   变量.toSting()    注意:undefined和null不可以
Null和undefined无toString方法。

任何简单类型转换成Number

此转换容易产生NaN,一旦被转换的变量中含有非数字字符,都容易出现NaN
1.  变量-*/一个数字(有非数字字符会出现NaN)
例:var  num1  = “11”- 0;  var num2 =“11”* 1;var num =“11”/1;
JS底层做了一个强制类型转换,把字符串转换成了Number进行运算。
2.  Number(变量)(有非数字字符会出现NaN)
var num1 = Number(“18”);        把字符变成了数字。
var num2 = Number(“18.99”);   结果为18.99数字型。(有小数也转换)
3.  parseInt()和parseFloat()(译为取整和取浮点数)
空字符串parseInt()和parseFloat()返回NaN,Number("")返回0
parseInt(变量):如果变量中收割字符为字母则结果为NaN。
否则取出现首个非数字前的整数。
123 = parseInt(“123.123aaaa”);

parseFloat(变量):如果变量中收割字符为字母则结果为NaN。
否则取出现首个非数字前的浮点数。(没有小数取整)
123.123 = parseFloat(“123.123aaaa”);
4.  提别提示
Boolean类型中:true数值为1;false为0;
null的数值类型为0;
undefined无数值类型或者为NaN;

任何简单类型转换成Boolean

任何数据类型都可以转换成boolean类型,所以和遗忘两个转换不同;
1.  Boolean(变量)     
var bool = Boolean(“1111”);         bool为true;
2.  !!变量
第一个逻辑非操作会基于无论什么操作数返回一个与之相反的布尔值
第二个逻辑非操作则对该布尔值求反
于是就得到了这个值真正对应的布尔值

操作符

1 操作符种类

一、算数运算符(+—*/...)
a)  一元运算符:正号、负号、++、--、平方等一个变量就能运算
b)  二元运算符:+-*/%等两个变量才能运算
c)  三元运算符:  值1?值2:值3;
二、逻辑运算符( ||&& ! )(或且非)
三、比较运算符(<、>、==、>=...)
四、赋值运算符(=、+=、-=、*=、/=、%=)

优先级

1 () 
2 !、-(负数)、++、-- (正数省略+)(一元运算)
3 *、/、% 
4 +、- (加,减)(二元运算)
5 <、<=、<、>= (一级逻辑运算)
6 ==、!=、===、!==、 (二级逻辑运算)
7 && (三级级逻辑运算)
8 || 
9?: (三元运算)
10 =、+=、-=、*=、/=、%= (赋值运算)
![image.png](http://upload-images.jianshu.io/upload_images/8848661-5e3bcf96067f7449.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

&&和||运算

1   &&链接两个boolean类型,有一个是false结果就是false。
链接值不是布尔类型时,按照成布尔类型计算,结果本身不变。(非布尔)
例子: 1 = 2&&1;     0 = 0 && 1;   都是true取后面,都是false取前面。
2   ||链接两个boolean类型,有一个是true结果就是true。
链接值不是布尔类型时,按照成布尔类型计算,结果本身不变。(非布尔)
例子: 2= 2||1;      1 = 0 || 1;   都是true取前面,都是false取后面。

var obj  =  document.body.scrollTop  ||  document.documentElement.scrollTop;

代码部分

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
  <script type="text/javascript">
       // 数值型: number
       // var  a=10;
       //  var b= 20;
       //   console.log( a +b);
       //   
       //   字符串:string
            // var  a ="123"
            //  var b ="12"
            //   console.log(a+b);
            //   console.log(typeof a)
            //   
            //   布尔:boolean
               // var a= true;
               // var b=false;
               // console.log(typeof a)
               // console.log(typeof b)
               // 
               // undefined: 未定义
                 // var a 

                 // console.log (typeof a);
                 // 
                 //  null: 空
                     var a=null; 

                     console.log (typeof a)(object)
  
  </script>
    
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script type="text/javascript">
           // 转为字符串
         // var  a=1;
         //  var b=1+""
         //   var c=String(a)
         //    var d=a.toString();
         // console.log(typeof a);
         // console.log(typeof b);
         // console.log(typeof c);
         // console.log(typeof d);
            // 转为Number型
              
              // var a="";
              //  var b= 1122-"";
              //  var c=1*"";
              //   var d= 1/"";
              //    var e=Number(a)
              //  console.log(typeof a);
              //   console.log(typeof b);
              //    console.log(typeof c);
              //    console.log(typeof d);
              //    console.log(typeof e);
                  
                   var num=11.11;
                   var n= parseInt(num);
                   var m= parseFloat(num);
                   console.log(typeof n);
                   console.log(typeof m); 
    </script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
     <title>Document</title>
</head>
<body>
 <script type="text/javascript">
    
    var a=Number(prompt("aaaaa"));
     var b=Number(prompt("bbbbbb"));
      a>b ?alert("a>b是正确的"): alert("a>b是错误的");
  </script>
    
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
<script type="text/javascript">
    var a=prompt("我是弹出输入输入框")
     console.log(a);
       console.log(parseInt(a%2));
       console.log(parseInt((a%100)/10));
       console.log(parseInt(a%10));
       console.log(parseInt(a%2) + parseInt((a%100)/10) + parseInt(a%10));
     
</script>
    
</body>
</html>
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容