JS 基本数据类型

第二章基本数据类型

1. 最大数 Infinity 无穷大

JavaScript 所能处理的最大值是 1.7976931348623157e+308,而最小值为 5e-324。

NAN - Not A Number typeof -> 'number'

JavaScript语言中有五大基本数据类型:

  • 数字;
  • 字符串;
  • 布尔值;
  • undefined;
  • null。
任何不属于基本类型的东西都属于对象。
  • 数字类型可以存储的数据包括:正负整数、浮点数、十六进制数与八进制数、指
    数以及特殊数值 NaN、Infinity、-Infinity。

  • 字符串类型存储的是一对引号之间的所有字符。

  • 布尔类型的值只有两个:true 和 false。

  • null类型的值只有一个:null。

  • undefined类型的值只有一个:undefined。

  • 绝大部分值在转换为布尔类型时都为 true,但以下 6 种 falsy 值除外:

    • "";
    • null;
    • undefined;
    • 0;
    • NaN;
    • false。

第三章 函数

  1. URI (Uniform Resource Identifier 统一资源标识符)
    URL ( Uniform Resource Locator, 统一资源定位符)

encodeURI()或 encodeURIComponent()。前者会返回一 个可用的 URL,而后者则会认为我们所传递的仅仅是 URL 的一部分。

3.3 函数的作用于
  • “全局变量”指的是定义在所有函数之外的变量(也 就是定义在全局代码中的变量),
  • “局部变量”,所指的则是在某个函数中 定义的变量。
3.3.1 变量的提升(hoisting)

当JavaScript执行过程进入新的函数时, 函数内被声明的所有变量都会被移动(提升)到函数最开始的地方.
注意: 被提升的只有变量的声明, 而与之相关的赋值操作 并不会被提升

var a = 123;
function f() {
    alert(a); //undefined
    var a = 1;
    alert(a); //1
}

等价于

var a = 123;
function f() {
    var a;    // var a = undefined;
    alert(a); 
    a = 1;
    alert(a);
}
3.4 函数也是一种数据
1. 函数标识记法 (匿名函数)

var f = function () {
    return 1;
}
  • 特性:
  • 他们所包含的是代码
  • 他们是可执行的(可调用的);
3.4.3 匿名函数的用法
  • 匿名函数作为参数传递给其他函数 (回调函数)
  • 执行某些一次性任务
匿名回调函数的优势:
1. 他可以让我们在不做命名的情况下传递函数(这意味着可以节省变量名的使用);
2. 我们可以将一盒函数调用操作委托给另一个函数(这意味着可以节省一些代码编写工作);
3. 他们也有助于提升性能
3.4.4 即时函数
    1. 不会产生任何全局变量, 无法重复执行, 适合执行一些一次性任务或初始化任务

( function () {
    alert('foo');
  }
)();

 (function () {
      // ...
 } () );
3.4.5 内部(私有)函数
优点: 
    1. 有助于我们确保全局名字空间的纯净性(这意味着命名冲突的机会很小);
    2. 确保私有性 - 这使我们可以选择只将一些必要的函数暴露给"外部世界", 而保留属于自己的函数, 使他们不为该应用的其他部分所用
3.5 闭包
3.5.3 getter setter
   var getValue, setValue;
   (function() {
        var secret = 0;
        getValue = function(){
           return secret;
        };
        setValue = function (v) {
           if (typeof v === "number") {
                secret = v; 
           }
        }; 
   }());
   
   //输出
   getValue(); //0
   
   setValue(123);
   getValue(); //123
   
   setValue('111');
   getValue(); //123
3.5.4 迭代器
function setup(x) {
      var i = 0;
      return function(){
        return x[i++];
      };
}

var next = setup(['a', 'b', 'c']);

next(); //a
next(); //b
next(); //c

第四章

16进制转10进制 
parseInt('ff', 16) //255

10进制 -> 16进制
(255).toString(16) //'ff'
4.2.7 Math

Math对象不是函数对象不能用new创建, Math只是一个包含一系列方法和属性, 用于数学计算的全局内建对象

  • 数字常数π
    Math.PI;
    3.141592653589793

  • 2的平方根
    Math.SQRT2
    1.4142135623730951

  • 欧拉常数e
    Math.E
    2.718281828459045

  • 2的自然对数
    Math.LN2;
    0.6931471805599453

  • 10的自然对数
    Math.LN10
    2.302585092994046

  • 随机数
    Math.random() * 8 + 2
    (2到10之间的某个数)

数字取整

  • floor(); 小于或等于指定值的最大整数
  • ceil(); 取大于或等于指定值的最小整数
  • round(); 取最靠近指定值的整数.
1. 2的8次方
Math.pow(2, 8);  //256

2. 9的平方根;
Math.sqrt(9);     //3 

你可能感兴趣的:(JS 基本数据类型)