[JavaScript]ES5基础知识总结
1.JavaScript是一门动态语言,ES6的出现弥补了Js在大型项目上的乏力(有了“类”)。
以下是关于ES5的基础知识:
2.
JavaScript 与C++或Java 这种传统的面向对象语言不同,它实际上压
根儿没有类。该语言的一切都是基于对象的,其依靠的是一套原型(prototype)系统。而
原型本身实际上也是一种对象。
3.
封装:封装概念常由两部分组成:
(1)相关的数据(用于存储属性)
(2)基于这些数据所能做的事(所能调用的方法)
4.
在JavaScript 中,还有一种叫做Infinity 的特殊值。它所代表的是超出了JavaScript 处
理范围的数值。另外,任何数除以0 结果也为Infinity.
即便将正负Infinity相加,我们也不会得到0,而是会得到一个叫做NaN(Not A Number 的缩写,即不是数字)
的东西。
5.
NaN:尽管该值得名字叫作‘不是数字’(not a number),但事实上它还是属于数字类型,只不过是一种特殊的数字。
如果我们在算术运算中使用了不恰当的的操作数,导致运算失败,该运算就会返回
NaN。
> var a = 10 * "f";
> a;
NaN
而且NaN 是有传染性的,只要我们的算术运算中存在一个NaN,整个运算就会失败。
> 1 + 2 + NaN;
NaN
6.当我们将一个数字字符串用于算数运算中的操作数时,该字符串会在运算中当做数字类型来使用。
7.
两次!!值还原
借助双重取反操作,我们可以很轻易地将任何值转换为相应的布尔值。理解各种类
型的值转换为相应布尔值的规则非常重要。除了下面所列出特定值以外(它们将被转换
为false),其余大部分值在转换为布尔值时都为true。
空字符串""。
null。
undefined。
数字0。
数字NaN。
布尔值false。
这6 个值有时也会被我们称为falsy 值,而其他值则被称为truthy 值(包括字符串"0"、
" "、"false"等)。
8.比较运算符
JS中的==运算符有点不严格,分为相等运算符和严格相等运算符:
当两个操作数相等时返回true。在该比较操作执行之前,两边的操作数会被自动转换为相同类型。
===:严格相等运算符:
当且仅当两个操作数的值和类型都相同时返回true。这种比较往往更可靠,因为其幕后不存在任何形式的类型转换。
!=:不相等运算符。(类型会进行转换)
!==:严格不相等运算符。(类型不转换)
PS:NaN 不等于任何东西,包括它自己。
9.Undefined,当使用一个不存在的变量时,控制台会报错。但可以使用typeof修饰符来进行修饰就可以。会返回一个字符串“undefined”。
如果我们在声明一个变量时没有对其进行赋值,调用该变量时并不会出错,但typeof操作符依然会返回"undefined"。但null 值就完全是另一回事了。它不能由JavaScript 自动赋值,只能交由我们的代码来完成。
这是因为null 和undefined 在被转换为其他基本类型时,方法存在一定的区别。
在与数字进行运算时,undefined会被转换成NaN。
10.五大基本类型(number,boolean,string,undefined,null)
PS:
(1)任何不属于基本类型的东西都属于对象,
(2)数字类型可以存储的数据包括:正负整数、浮点数、十六进制数与八进制数、指数以及特殊数值NaN、Infinity、-Infinity。
(3)字符串类型存储的是一对引号之间的所有字符。
(4)null 类型的值只有一个:null。
(5)undefined 类型的值只有一个:undefined。
(6)绝大部分值在转换为布尔类型时都为true,但以下6 种falsy 值除外:"";null;undefined; 0; NaN;false。
11.检查变量存在,最好是用typeof来判定:
var result = "";
> if (typeof somevar !== "undefined"){
result = 'yes';
}
12.对于js中的数组,它可以存放任何类型,可以适用delete来移除某一项,但是移除之后数组长度并不会减少,而是这一项的值为undefined。
增加元素:我们可以通过索引来更新数组中的元素。
删除元素:为了删除特定的元素,我们需要用到delete 操作符。然而,相关元素被删除后,原数组的长度并不会受到影响。从某种意义上来说,该元素被删除的位置只是被留空了而已。