javascript 学习一

一、javascript 与 ECMAscript。

javascript 是基于 ECMAscript 为核心的基础上,结合 DOM 和BOM 方法和接口实现的综合语言。

ECMAscript 是一个开发规则,web 是 ECMAscript 的宿主环境之一。node也是宿主环境之一。

javascript 是 ECMAscript 的扩展。

二、<script></script>.

属性为 src ,可以引用任何域内的文件,不规定是否是以 .js 作为后缀名。

src 为阻塞加载,即当js 文件没有加载完成时,浏览器是不加载 script 标签之后的东西的。

type  =  text/javascript 

当src 属性存在时,script 标签内部写入的js会被忽略。、

三、noscript 

noscript 标签是在浏览器不支持jsvascript 或者 用户关闭了jsvascript 功能之后显示的元素,<noscript>文本写在这里</noscript>。当javascript被支持的时候,noscript是不显示的。

四、变量。

ECMAscript 的变量是松散类型的,所谓松散类型就是可以用来保存任何类型的数据。

每个变量仅仅是用于保留值的占位符。用var 定义变量。

五、数据类型

五种简单数据类型

Null ,Undefined ,Number ,Boolean, String

一种复杂数据类型

Object

通过typeof 返回的数据类型。

typeof  Null  == Object    

typeof Number == number

typeof String == string 

typeof Boolean = boolean

typeof Unbefined == undefined

typeof array = Object

typeof object = object

typeof function = function

////////

undefined

undefined 的定义主要是通过var定义之后,并没有赋值,则ECMAscript 会定义为undefined。并不提倡 var a = undefined;  的写法,因为undefined 最明显的作用是为了比较一个变量的值是否等于 undefined  ,用于比较。

undefined 的变量和没有通过var 定义的变量不同,如果没有通过var 声明,则会直接报错 not defined 。如果没有通过var 定义,但是typeof  依然会返回 undefined。即对未初始化和未定义的变量 的返回值都为undefined。

null

null  代表一个指针,指向一个值为空的对象。

undefined == null 是因为  undefined 实际上是从null派生出来的,所以 ECMAscript 规定 他们的相等性测试返回true。

不提倡 将变量直接显式的赋值为undefined。

提倡 定义一个空的对象的变量时,应该明确的让变量保存null值。

这有助于区分null 和undefined 的区别 

Boolean

true 和 false 

Boolean() 却可以将括号内变量转化为boolean值。转换的值只有true 和false 两种。

number类型

console.log(Boolean(1));//true 任何非0数字都被转换为true,包括负数和无穷大。
console.log(Boolean(0));//false 0 和 NaN 转换为false
console.log(Boolean(-1));//true

string 类型

console.log(Boolean(""));//false  空字符串会转换为false
console.log(Boolean("we"));//true 任何非空字符串都会转换为true

boolean类型   结果显而易见

console.log(Boolean(true));//true 
console.log(Boolean(false));//false  

Object类型

var a = {};
console.log(Boolean(a));//true  任何对象都会被转换为true 
console.log(Boolean(null));//false  null会被转换为false

undefined 类型   undefined类型只有一个值 undefined 所以只能被转换为false。

console.log(Boolean(undefined));//false  undefined会被转换为false

Number

ECMAscript 在严格模式下不支持 8进制的数字。

1、浮点数。

即必须有一个小数点,且小数点后要有一个数字。

因为存储浮点数的内存是整数的两倍,所以ECMAscript 会适时的将浮点数转换为整数,如果 小数点后没有数字和 小数点后数字为0的情况下,会将浮点数转换为 整数。

10.0 = 10    10. = 10

但是 0.1 + 0.2 ==0.3 返回的确实 false, 最高精度为17位小数, 将大于6个0 的数值转换为e , 即 1000000 = e的6次方。

2、数值

isFinite()  会测试括号内的数字是不是有穷的,即最大值为无穷大,最小值为无穷小。

浏览器可以显示的最大值和最小值

console.log(Number.MIN_VALUE);// 可以显示的最小值 5e-324
console.log(Number.MAX_VALUE);//可以显示的最大值 1.7976931348623157e+308
        

isFinite() 会比较 括号内的值是否在 最大值和最小值之间。

3、NaN。

一个特殊的数字,用于应该返回数字,但是没有返回数字的情况。

任何涉及NaN的操作,最终结果都会返回NaN。

NaN和任何值都不想等,包括自身。

isNaN()  将内容转换为数值,判断结果是否为NaN。

4、数值转换

Number(),parseInt(),parseFloat().

number() 忽略0开头,空字符串 转换为 0;

parseInt()具有两个参数,第二个参数可以指定转换的进制类型,忽略小数点之后的数字,返回整数

parseFloat()一个参数,识别第一个小数点,忽略第二个小数点之后的数字,忽略0开头。

string

string 字符串定义之后不能够更改,只能用其他值填充,可以有单引号和双引号包含表示,但是单双引号必须成对匹配出现。当存在特殊的字符字面量的时候,需要通过来进行转义。

有string.length 属性,返回字符的长度。

string 的更改必须先销毁之前的字符串,然后用另一个包含新值的字符串填充该变量。

转换为字符串  toString() 方法。

String(a) 方法,如果 a 有toString 方法,则会调用该方法,如果是null,undefined,则返回字面量。

Object

ECMAscript中的对象是 一组数据和功能的集合。可以通过new 操作符和要创建的对面类型的名称来创建。

var a = new Object();
var a = new String();
var a = new Boolean();
var a = new Array();
var a = new Number();

六、操作符

1、递增和递减

--a,++a  前置递增和前置递减,会在引用a之前完成计算操作。a--,a++ 是后置递减和递增,会在引用了a值计算之后才进行递增和递减的计算。

前置递增和递减操作是域执行语句的优先级想等。

当 a是字符串类型的话,如果其中含有数字,则会将a转换为数字之后进行计算,如果不含数字,则会转换为NaN。字符串变为 数值变量

a是布尔值,则会将a  true 转换为1,false转换为0,然后进行计算,布尔变量转换为 数值变量。

a 是浮点数或整数时,直接进行 数值计算。

a 是对象时,则会先执行 valueOf() 操作,取得可以执行以上可操作的值,如果为NaN,则执行toString()。对象值变成数值变量。

2、-,+。

+ 在数字之前不会对数值产生任何影响。

- 主要表示负数。

+ 后跟着非number类型的值时,会执行 Number()操作。

- 后跟着非number 类型的值时,后执行number()操作,然后在结果上添加 负号

3、逻辑操作符。也叫 布尔操作符。

或与非  |  &&  !

返回的都是 布尔值。

逻辑 非

 用一个感叹号表示  !  ,判断是否为真,如果为真,则返回 false  ,如果为false 则返回true,在判断之前会 执行 boolean() 操作,将 感叹号后的值转化为boolean值之后再进行判断。

逻辑 与  &&

a&&b   判断boolean(a)与boolean(b) 的值是否同时为true,如果都为true,则返回true,如果有一方不是true,则会返回false。而且当 第一个值a 的返回值为false 的时候,会跳过b 的判断,直接返回false。 所以 逻辑 与  时一种短路操作符。

逻辑 或  || 

a || b  判断,如果a和b中有一个为true,则会返回true,只有两个都有为false 的时候才会返回false。  逻辑或 也是短路操作符,即如果第一个值为true'  的时候,就会跳过b 的判断,直接返回true。

可以用于 赋值操作,如果a为true,则直接采用a 的值,否则采用b 的值。类似与 a?a:b; 三目运算符。先判断a,如果a为true 则返回 a,否则返回b。a为优先,b作为备用。

4、* 乘法   / 除法  % 求模

乘法   a*b 

如果a或b有一个不是数值,则后台执行number(),转换为数值之后再进行计算。

除法 a/b  

都是数值,则进行常规的除法运算。

如果a或b有一个不是数值,则后台执行number(),转换为数值之后再进行计算。如果b为0,则返回NaN。

% 求模  a%b  返回 的是余数。

都是数值,则进行常规的除法运算。返回 余数。

如果a或b有一个不是数值,则后台执行number(),转换为数值之后再进行计算。如果b为0,则返回NaN。

5、+ - 加法 和 减法

 加法 a+b 

如果a 和 b都是数字,则进行常规的加法运算

如果有一方为NaN,则结果为NaN。

如果a是字符串,b为非字符串,则将 b   在后台通过 toString() 方法转换为字符串,与a进行字符串拼接。

小括号包含的可以优先计算

减法 a-b

如果a 和 b都是数字,则进行常规的加法运算

如果有一方为NaN,则结果为NaN。

与加法不同,如果其中任何一方不是数值,则会后台通过 number()转换为 数值,然后进行计算。
小括号包含的可以优先计算
原文地址:https://www.cnblogs.com/RoadAspenBK/p/7755613.html