2468工作室_成都网站开发_网页设计_二次开发_推广服务_二四六八工作室 我们一直坚信只有用心去做才能得到好的作品!
您当前的位置:主页 > 知识分享 >
快乐前端:JavaScript 学习知识点总结(二)
作者: 2468工作室 发布日期:2020-06-15 16:38 查看次数:

1、基本数据类型:
数据类型 说明
null 空值,表示非对象,Null 类型只有一个值,即 null,它表示空值,定义一个空对象指针。
undefined 未定义的值,表示未赋值的初始化值,undefined 是 Undefined 类型的唯一值,它表示未定义的值。当声明变量未赋值时,或者定义属性未设置值时,默认值都为 undefined。对于函数来说,如果没有明确的返回值,则默认返回值也为 undefined。
(对于未声明的变量,如果直接在表达式中使用,会引发异常。
console.log(a == undefined); //提75未定义的错误信息)
number 数字,数学运算的值
string 字符串,表示信息流
boolean 布尔值,逻辑运算的值,仅包含两个固定的值:true 和 false。其中,true 代表"真”,而 false 代表“假”。
object 对象,表示复合结构的数据集
 
2、字符串直接量:习惯使用单引号表示字符串,HTML 中包含的属性值使用双引号表示, 这样不容易出现错误。如果要换行显示字符串,可以在字符串中添加换行符\n。
 
3、字符串操作借助 String 类型的原型方法,可以灵活操作字符串。再配合正则表达式,还可以完成复杂的字符串处理任务。
例如:
var str1 = "你好",
str2 = "JavaScript",
string = str1 + "," + str2;  //你好,JavaScript
 
4、字符序列JavaScript 字符串是固定不变的字符序列,虽然可以使用各种方法对字符串执行操作,但是返回的都是新的字符串,原字符串保持固定不变。此外,也不能使用 delete 运算符删除字符串中指定位置的字符。
(在 ECMAScript 5 中,字符串可以作为只读数组使用。除了使用 charAt() 访问其中的字符外,还可以使用中括号运算符来访问。位置下标从 0 开始,最大位置下标为 length-1。)
 
5、数值直接量当数字直接出现在程序中时,被称为数值直接量。在 JavaScript 程序中,直接输入的任何数字都被视为数值直接量。
例如:
var int = 1;  //整型数值
var float = 1.0;  //浮点型数值
(JavaScript 中的所有数字都是以 64 位浮点数形式存储,包括整数。例如,2 与 2.0 是同一个数。)
 
6、浮点数溢出执行数值计算时,要防止浮点数溢出。
例如:
0.1+0.2 并不等于 0.3,而是0.30000000000000004。
var float = 1.2e-3;  等价于  var float = 0.0012;
但不等价于:
var float = 1.2*1/10*1/10*1/10;  //返回 0.0012000000000000001
var float = 1.2/10/10/10;  //返回 0.0012000000000000001
这是因为 JavaScript 遵循二进制浮点数算术标准(IEEE 754)而导致的问题。
解决方法:浮点数中的整数运算是精确的,所以小数表现出来的问题可以通过指定精度来避免。
例如:a = (1+2)/10;   //0.3。
 
7、特殊数值
特殊值 说明
Infinity 无穷大。当数值超过浮点型所能够表示的范围;反之,负无穷大为-Infinity
NaN 非数值。不等于任何数值,包括自己。如当0除以0时会返回这个特殊值
Number.MAX_VALUE 表示最大数值
Number.MIN_VALUE 表示最小数值,一个接近0的值
Number.NaN 非数值,与NaN常量相同
Number.POSITIVE_INFINITY 表示正无穷大的数值
Number.NEGATIVE_INFINITY 表示负无穷大的数值
 
 
8、数值运算:使用算数运算符,数值可以参与各种计算,如加、减、乘、除等运算操作。为了解决复杂数学运算,JavaScript 提供了大量的数值运算函数,这些函数作为 Math 对象的方法可以直接调用。
例如:
var a = Math.floor(20.5);  //调用数学函数,向下舍入
var b = Math.round(20.5);  //调用数学函数,四舍五入
 
9、数值转换:JavaScript 支持把十进制数值转换为二进制、八进制和十六进制等不同进制的数值。
十六进制数值以“0X”或“0x”作为前缀,八进制数值以数字 0 为前缀,二进制数值以“0B”或“0b”作为前缀。
例如:
var num1 = 0x1F4;  //十六进制数值
num2 = 0144;  //八进制数值
num3 =0b11  //二进制数值
document.write(num1);  //返回 500
document.write(num2);  //返回 100
document.write(num3);  //返回 3
toString() 方法可以根据所传递的参数把数值转换为对应进制的数字字符串。参数范围为 2~36 之间的任意整数。
例如:
var a = 32;
document.writeln(a.toString(2));  //返回字符串100000
document.writeln(a.toString(4));  //返回字符串200
document.writeln(a.toString(16));  //返回字符串20
数值直接量不能直接调用 toString() 方法,必须先使用小括号或其他方法强制把数字转换为对象。
例如:
document.writeln((32).toString(16));   //返回20
 
10、严格模式在代码首部添加以下一行字符串("use strict"),即可启用严格模式。(用于消除 JavaScript 语法中不合理、不严谨的用法。消除代码运行的一些安全隐患。提高编译器效率,提升程序运行速度。为未来新版本的规范化做好铺垫。)
严格模式可以在全局使用也可以在局部使用,局部使用时常放置于JS代码块内或函数内的首部。
 
11、判断类型typeof + constructor + toString
typeof 运算符可以检测数据的基本类型,(typeof 数据值);
例如:document.writeln(typeof false); //返回字符串"boolean"
问题:把 null 归为 Object 类型,而不是特殊类型(Null)的值。把 function(,){} 归为 Function 类型。即把函数视为一种独立的基本数据类型,而不是 Object 类型的一种特殊子类。
constructor 是 Object 类型的原型属性,它能够返回当前对象的构造器(类型函数)。利用该属性,可以检测复合型数据的类型,如对象、数组和函数等。
undefined 和 null 没有 constructor 属性,不能够直接读取,一般应先检测值是否为 undefined 和 null 等特殊值,然后再调用 constructor 属性。数值直接量也不能直接读取 constructor 属性,应该先把它转换为对象再调用。
例如:document.writeln((100).constructor);
 
值(value) typeof value(表达式返回值) value.constructor(构造函数的属性值)
var value = 1 "number" Number
var value = "a" "string" String
var value = true "boolean" Boolean
var value = {} "object" Object
var value = new Object() "object" Object
var value = [] "object" Object
var value = new Array() "object" Object
var value = function(){} "function" Function
function className(){};
var value = new className();
"object" Object
 
 
toString 是 Object 类型的原型方法,它能够返回当前对象的字符串表示。利用该属性,可以检测复合型数据的类型,如对象、数组、函数、正则表达式、错误对象、宿主对象、自定义类型对象等;也可以对值类型数据进行检测。
例如:
function typeOf(obj){
  var _toString = Object.prototype.toString; //引用 Object 的原型方法 toString () //列奉所有可能的类型字符串表示
  //模仿typeof运算符返回值,通过映射,统一字符串表示的值
  var _type ={
    "undefined" : "undefined",
    "number" : "number",
    "boolean" : "boolean",
    "string" : "string",
    "[object Function]" : "function0f",
    "[object RegExp]" : "regexp",
    "[object Array] " : "array",
    "[object Date]" : "date",
    "[object Error]" : "error"
    //在这里可以继续展开要检测的类型
  }
//把值转换为字符串表示,然后匹配 _type 对象中的键值对,最后处理特殊值 null
return _type[typeof obj] || _type[_toString.call(obj)] || (obj ? "object" :"null");
}
 
//以下为应用示例
var _abs = Math.abs;  //引用 Math 对象的 Abs 方法
console.log(typeOf(_abs));  //返回字符串表示 "function”
  //说明该方法为一个 Function 类型