javascript词法结构①

字符集

1、区分大小写:js是区分大小写的语言,关键字、变量、函数名和所有的标识符都必须采取一致的大小写形式,不同的大小写会形成不同的变量(名);
2、多数情况下js会忽略程序中的空格和换行符,由此,可以在代码中随意的使用空格和换行符,可以采用整齐、一致的缩进来形成统一的代码风格,提高可读性。
3、标识符与保留字: 标识符必须以字母、下划线(_)或 开 头 后 续 的 字 符 可 以 是 数 字 、 字 母 、 下 划 线 或 开头 后续的字符可以是数字、字母、下划线或 线 数字不允许作为首字符出现(主要是为了便于Javascript识别标识符与数字)
保留字是Javascript吧一些标识符拿出来用作自己的关键字,因此 不能在程序中使用这些关键字作为标识符了:
关键字
关键字
4、分号分割:Javascript使用分号将语句分割开,在JavaScript中,如果各个语句各自独占一行,那通常是可以省略语句之间的分号
通常来讲,如果一条语句以( 【 / +或- 开始 那么他极有可能和前一条语句一起解析,有些程序员喜欢保守的在语句前加上一个分号,这样哪怕之前的语句被修改了,也能确保当前的语句被正常的解析。
一般来讲 如果当前语句和下一行语句无法合并解析,JavaScript会在第一行后面填补分号,但有两个例外,涉及return、break和continue语句的场景中,如果紧跟着换行,JavaScript会在换行出自动填补分号(而不是和下一句一起解析时)
第二个例外是涉及++和–运算符的时候,这些运算符可以作为表达式的前缀,也可以当做表达式的后缀。如果将其用作后缀表达式,他和表达式应该在同一行,否则行尾将自动填补分号。
5、变量提升:JavaScript引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。这造成的结果,就是所有的变量的声明语句,都会被提升到代码的头部,这就叫做变量提升

console.log(a);

var a = 1;

实际等同于
var a ;

console.log(a)

a = 1;
变量提升只对var命令声明的变量有效,如果一个变量不是var命令声明的,就不会发生变量提升
console.log(b) b = 1;

数据类型

javaScript 语言的每一个值,都属于某一种数据类型。JavaScript 的数据类型,共有六种。(不包含ES6新增symbol类型值)
数值(number):整数和小数(比如1和3.14)
字符串(string):字符组成的文本(比如”Hello World”)
布尔值(boolean):true(真)和false(假)两个特定值
undefined:表示“未定义”或不存在,即由于目前没有定义,所以此处暂时没有任何值
null:表示无值,即此处的值就是“无”的状态。
对象(object):各种值组成的集合

通常,我们将数值、字符串、布尔值称为原始类型(primitive type)的值,即它们是最基本的数据类型,不能再细分了。而将对象称为合成类型(complex type)的值,因为一个对象往往是多个原始类型的值的合成,可以看作是一个存放各种值的容器。至于undefined和null,一般将它们看成两个特殊值。
对象又可以分成三个子类型:
狭义的对象(object) var obj = new Object(); / var obj1 = {};

数组(array) var arr = new Array(); / var arr1 = [];

函数(function) function demo(){} / var demo1 = function(){};

JavaScript的所有数据,都可以视为广义的对象。

typeof运算符可进行基本类型与引用类型的区分与判断
原始类型:
数值、字符串、布尔值分别返回number、string、boolean。
typeof 123 // ‘number’;
typeof ‘123’ // ‘string’;
typeof true // ‘boolean’;
函数类型:
var a = function(){}; tyepof a // ‘function’;
typeof undefined // “undefined”;
除此之外,其他情况都返回object
typeof window // “object”
typeof {} // “object”
typeof [] // “object”
typeof null // "object"

数字

1、JavaScript不区分整数和浮点数值,JavaScript中的所有数字均使用浮点数值表示。按照数字格式能够表示的整数范围是从-2^53 ~ 2^53,包含边界值。
2、整型直接量:使用一个数字序列表示一个十进制整数,或以0X开头其后跟随十六进制数串直接量
3、浮点型直接量可以含有小数点,采用传统的实数写法,一个实数由整数部分、小数点、和小数部分组成,也可以使用指数计数法来表示。
4、JavaScript中的算术运算:算术运算包括+ - * / 和求余% JavaScript中的算术在溢出或下溢的时候不会报错 而是会返回一个infinity
5、二进制浮点数的四舍五入错误:JavaScript中的数字无法精确的表述,即:var x =.3 - .2 ,var y = .2 - .1; x==y 会返回一个false。
6、NaN类型,即非数值(Not a Number)是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数
无穷大/无穷大 均返回NaN;任何涉及NaN运算操作都会返回NaN;两个NaN数字类型值不相等
7、数值转换-将非数值转换为数字:三个方法:
Number()适用于任何数据类型
转换规则:
Number(true) == 1; Number(false) == 0;
Number(null) == 0; Number(undefined) == NaN;
Number(‘纯数字项字符串’) == ‘数字项’;
Number(‘1.6’) == 1.6; Number(‘ ’) == 0;
Number(‘hello world’) == NaN;

parseInt()
只能转换字符串,第一个字符非数字格式,直接返回NaN; parseInt(‘abc’) // NaN
当遇到包含非数字类型字符时,转换停止 parseInt(‘123.5’) // 123;

parseFloat()
与parseInt使用方法类似,当遇到小数点的时候会解析多一位parseFloat(‘123.23.2’) // 123.23

文本

字符串是一组由16位数值组成的不可变的有序序列,每个字符通常来自于Unicode字符集,字符串的长度是其所含的16位值的个数;

字符串直接量可以拆分成数行,每行以反斜线\结束,如果希望字符串直接量中另起一行,可以使用转义字符\n;

字符串创建值不可变,除非销毁之前赋值内容
var language = “Java”; language = language + ‘script’;

转换字符串:
toString()方法 每种数据类型都有该方法(null与undefined除外);
String()方法 可将null 与undefined 进行数据类型转换;
‘+’将数据类型与字符串相加,也可将该数据转换为字符串;

布尔值

布尔值代表“真”和“假”两个状态。“真”用关键字true表示,“假”用关键字false表示。
Boolean 类型是 ECMAScript 中使用得最多的一种类型,该类型只有两个字面值:true 和 false。
布尔类型值区分大小写
要将一个值转换为其对应的 Boolean 值,可以调用转型函数 Boolean();
在这里插入图片描述

undefined

Undefined 类型只有一个值,即特殊的 undefined。在使用 var 声明变量但未对其加以初始化时,这个变量的值就是 undefined
var message; console.log(message) // undefined;
undefined 一般用于比较判断
该类型数据只用一个值

NULL

Null 类型是第二个只有一个值的数据类型,这个特殊的值是 null。从逻辑角度来看,null 值表示一个空对象指针
typeof null == object;
如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为 null 而不是其他值。这样一来,只要直接检查 null 值就可以知道相应的变量是否已经保存了一个对象的引用
请注意:null == undefined;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值