javaScript高级程序设计(浏览笔记一)

3.4JavaScript数据类型

  • 基本数据类型:undefind,null,Boolean,string,number;
  • 复杂数据类型:object  --本质上是由一组无序的名值对组成;

3.4.1typeof操作符

  对一个值使用typeof可能返回以下字符串

  • “underfind”  -- 如果这个值未定义
  • “boolean” -- 如果这个值是布尔值
  • “string” -- 如果这个值是字符串
  • “number” -- 如果这个值是数值
  • “object”  --  如果这个值是对象或者 null   --因为特殊值null是被认为是一个空的对象引用
  • “function” -- 如果这个值是函数

  从技术角度上来讲,函数在ECMAScript中是对象,不是一种数据类型,然而函数也确实有些特殊的属性,因此通过typeof来区分函数和其他对象是有必要的

3.4.2underfind类型

underfind类型只有一个值,就是underfind,在使用var声明一个变量,并未对其加以初始化时,这个变量的值就是underfind

var message;
alert(message == undefind); //返回true

对于未声明的变量,只能执行一项操作,就是typeof,返回underfind,否则报错

var message;
alert(message); // underfind
alert(news); // 报错
alert(typeof(message)) //underfind
alert(typeof(news)) //underfind

3.4.3null类型

  • null是第二个只有一个值的数据类型,这个特殊值是null,从逻辑上讲,null值表示一个空对象指针,而这也正是使用typeof 操作符检测 null值时会返回“object”的原因
  • 实际上,underfind值是派生字null值,因此ECMA-262 规定对他们相等性测试要返回true   ,即 (underfind == null)---->true

3.4.4boolean类型

将其他数据类型转换成 boolean 值,可以使用Boolean(),函数

3.4.5number类型


 

3.4.5function类型

  • 函数实际上是对象,每个函数都是function类型的实例
  • 函数有两种定义方法:
    • 函数声明语法:
      function sun(num1,num2){
          return num1+num2;
      };

      alert(sum(10,10)) //20
      functio sum(num1,num2){
      return num1+num2;
      }

       
    • 函数表达式定义函数
      var sum = function(num1,num2){
          return num1+num2;
      };

      alert(sum(10,10)) //报错
      var sum = function(num1,num2){
      return num1+num2;
      }

       
  • 解析器在执行环境中加载数据的时候,会率先读取函数声明,并使其在执行任何代码之前可以访问;至于函数表达式,则必须等到执行到函数的时候才能够访问;
  • 每个函数都包含两个属性,length(函数参数的个数) 和 prototype(prototype中包含所有实例方法的存在);
  • 每个函数都包含非继承而来的方法,apply(),和call();
    • 作用1:传递参数
    • 扩充函数赖以运行的作用域
    • window.color = "red";
      var o = {color:'blue'};
      function sayColor(){
          alert(this.color);
      };
      sayColor()   //red
      sayColor.call(this)   //red
      sayColor.call(window)  //red
      sayColor.call(o)  // blue
    • ECMAScript5还定义了一个方法,bind(); 这个方法会创建一个函数实例,其this值会被绑定到传给bind()函数的值;

3.7取随机数封装函数

function selectForm(lowerValue,upperValue){
    var choices = upperValue - lowerValue + 1;
    return Math.floor(Math.random()*choices + lowerValue);
};
var num = selectForm(2,10) //取2-10之间(包括2和10)的随机数

 

posted @ 2017-10-12 14:37  W-road  阅读(99)  评论(0编辑  收藏  举报