08-JavaScript语法篇1

一、字面量、变量、常量

  • 字面量:字面量就是一个值,比如变量的值或者常量的值
  • 变 量:定义完成后,可以修改的数据,var关键字 定义
  • 常 量:定义完成后,固定且不能改变的数据,const关键字 定义
总结:
常量与变量的区别:
① 常量与变量的存储方式是一样的,只不过常量必须要有初始值,而且值不允许被修改,而变量可以无初始值,且可以多次赋值。
常量与字面量的区别:
① 常量与字面量均不会被改变,常量为存储数据的容器,而字面量为等号右侧的值,字面量是由字符串,数字等构成的字符串或数值。

二、数据类型

  1. 程序在运行过程中会产生各种各样的临时数据, 为了方便数据的运算和操作, JavaScript对这些数据进行了分类, 提供了丰富的数据类型;

数据类型划分:
① 简单数据类型:Number、String、Boolean、Undefined、Null
② 引用(复杂)数据类型:Object

数据类型查看:typeof 操作符,会将检查的结果以字符串的形式返回给我们

  1. 简单数据类型

Number:
① 在JS中所有的数值都是Number类型(整数和小数)

var num1= 123;
var num2= 3.14;
console.log(typeof num1); 
console.log(typeof num2); 

② 由于内存的限制,ECMAScript 并不能保存世界上所有的数值

// 最大值:Number.MAX_VALUE
 console.log(Number.MAX_VALUE); 
 // 最小值:Number.MIN_VALUE
 console.log(Number.MIN_VALUE);  
 // 无穷大:Infinity, 如果超过了最大值就会返回该值
 console.log(Number.MAX_VALUE + Number.MAX_VALUE); 
 // 无穷小:-Infinity, 如果超过了最小值就会返回该值
 console.log(typeof Infinity); 
 console.log(typeof -Infinity); 

③ NaN 非法数字(Not A Number)
JS中当对数值进行计算时没有结果返回,则返回NaN

var num = NaN;
console.log(num);
console.log(typeof num);

注意:JS中整数的运算可以保证精确的结果
在JS中浮点数的运算可能得到一个不精确的结果

String:

① 字符串由单引号或双引号括起
② 使用字符串注意事项

  • 不能一单一双,必须成对出现
  • 相同引号不能嵌套,不同引号可以嵌套
  • 给变量加上引号, 那么变量将变为一个常量

Boolean:
布尔型也被称为逻辑值类型或者真假值类型, 只能够取真(true)和假(false)两种数值

  • 任何非零数值都是true, 包括正负无穷大, 只有0和NaN是false
  • 任何非空字符串都是true, 只有空字符串是false
  • 任何对象都是true, 只有null和undefined是false
    var bool1 = Boolean(0);
    console.log(bool1 );
    var bool2 = Boolean(1);
    console.log(bool2 );
    var bool3 = Boolean(-1);
    console.log(bool3 ); 
    var bool4 = Boolean("hello");
    console.log(bool4);
    var bool5 = Boolean("");
    console.log(bool5 );
    var bool6 = Boolean(undefined);
    console.log(bool6 ); 
    var bool7 = Boolean(null);
    console.log(bool7); 

Null和Undefined:
① Undefined是一种比较特殊的类型,表示变量未赋值,这种类型只有一种值就是undefined
undefined是Undefined类型的字面量,undefined和168、 "itlike"一样是一个字面量,Undefined和Number、String一样是一个数据类型,typeof对没有初始化和没有声明的变量都会返回undefined

② Null 类型也是只有一个值的数据类型,这个特殊的值是 null
从语义上看null表示的是一个空的对象,所以使用typeof检查null会返回一个Object

undefined值实际上是由null值衍生出来的,所以如果比较undefined和null是否相等,会返回true

三、数据类型转化

  1. 转换成字符串类型
    终极大法:拼接字符串方式
    任何数据和 + " " 连接到一起都会转换为字符串

  2. 将其它类型转换为Number类型

① 字符串转数字:

  • 如果字符串为空或者是一个全是空格的字符串,则转换为0
var s2 = "";
var r2 = Number(s2);
console.log(r2); 

var s3 = "           ";
var r3 = Number(s3);
console.log(r3); 
  • 如果字符串中有非数字的内容,则转换为NaN

② 布尔转数字

  • true 转成 1,false 转成 0

③ null和undefined转数字

  • null转数字为0
var s1 = null;
var r1 = Number(s1);
console.log(r1); 
  • undefined转数字为NaN
   var s2 = undefined;
   var r2= Number(s2);
   console.log(r2); 
  1. parseInt()函数/parseFloat()函数

① 使用意义
Number()函数中无论字符串中是否存在有效整数都会直接返回NaN,
利用parseInt()和parseFloat()可以提取字符串中的有效整数和浮点数

② parseInt()

  • 有两个参数,第一个参数是要转换的字符串,第二个参数是要转换的进制
  • 从第一位有效数字开始,直到遇到无效数字
  • 如果第一位不是有效数字,则直接返回NaN
    var s1 = "10rem";
    var r1 = parseInt(s1);
    console.log(r1);

    var s2 = "200X300";
    var r2 = parseInt(s2);
    console.log(r2);

    var s3 = "itLike001";
    var r3 = parseInt(s3);
    console.log(r3);

    var s4 = "";
    var r4 = parseInt(s4);
    console.log(r4);

③ parseFloat()

  • 不支持第二个参数,只能解析十进制数
  • 如果解析的内容里只有整数,则只解析成整数
  • 如果第一位不是有效数字,则直接返回NaN
  • 从第一位有效数字开始,直到遇到无效数字

④ 使用注意

  • 对非String使用parseInt()或parseFloat(), 会先将其转换为String类型然后在操作
    var s7 = false;
    var r7 = parseInt(s7); 
    console.log(r7); 
  1. +和-0运算符
  • 添加+号, 不会修改数据的正负性
   var s1 = "12306";
    var r1 = +s1;
    console.log(r1); 
    console.log(typeof r1);

    var s2 = "1.01";
    var r2 = +s2;
    console.log(r2); 
    console.log(typeof r2); 

    var s3 = "20rem";
    var r3 = +s3;
    console.log(r3); 
    console.log(typeof r3); 

    var s4 = true;
    var r4 = +s4;
    console.log(r4);
    console.log(typeof r4); 

    var s5 = false;
    var r5 = +s5;
    console.log(r5); 
    console.log(typeof r5); 
  1. 转成布尔类型
  • Boolean() , 0 ''(空字符串) null undefined NaN 会转换成false 其它都会转换成true
    console.log(Boolean(0));
    console.log(Boolean(''));
    console.log(Boolean(null));
    console.log(Boolean(undefined));
    console.log(Boolean(NaN));
    console.log(Boolean(-1));

    var str = 'itLike';
    var num1 = 123;
    var num2 = -1;
    console.log(Boolean(str));  
    console.log(Boolean(num1));  
    console.log(Boolean(num2)); 
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,393评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,790评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,391评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,703评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,613评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,003评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,507评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,158评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,300评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,256评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,274评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,984评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,569评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,662评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,899评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,268评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,840评论 2 339

推荐阅读更多精彩内容