zoukankan      html  css  js  c++  java
  • js程序设计01——基本概念

    本文为js高级程序设计学习笔记,笔记中不乏本人学习js的一些心得demo,喜欢的朋友可以直接参考原书“javascript高级程序设计”,写本笔记的目的是对js中容易出错、不易理解的地方作个笔记,以免后期继续踩坑。

    1、语法

    • 区分大小写:比如typeof用于测试数据类型,不同于typeOf,一个func完全可以定义为typeOf
    • 标识符:首字符必须是字母、下划线或$,之后可以是数字、字母、下划线或$;标识符不能使用系统关键字及保留字,比如var、true、false、null、let等
    • 严格模式:

    严格模式是ECMAScript 5中引入的概念,是为js定义解析以及执行模型的一种机制,也是为了兼容旧版本的ECMAScript版本而引入的,就是一种编译指示,可以确定ECMAScript 3版本编译运行时的一些不确定行为。使用"use strict",方法如下:

    function say(){
      "use strict";
      console.log("hello strict mode");
    }
    
    say();

    2、变量

    所有未经初始化的变量始终为undefined,不论变量类型:

    function say(){
      var message = "hello message";
    }
    say();
    alert(message);  //message未定义为undefined

    但是如果省略了var关键字,则message自动上升为全局变量,不会报错:

    function say(){
      message = "hello message";
    }
    say();
    console.log(message);

    结果:

    变量声明初始化允许同时进行,比如:

    var m1 = "1",m2 = "2",m3 = [1,2,3];
    console.log(m1);
    console.log(m2);
    console.log(m3);

    3、数据类型

    ECMAScript 5定义js有5中基本类型+1种复杂数据类型(引用类型),基本类型:Undefined、Null、Boolean、Number、String,复杂类型:Object

    其中typeof操作符是用来测试数据类型的,typeof的返回值可以是如下几种:

    “undefined”——唯一的Undefined类型值,表示“未定义”;
    “boolean”——对于Boolean的true or false返回;
    “string”——字符串返回;
    “number”——数值类型值返回;
    “object”——Object类型或者Null类型均返回;
    “function”——函数返回;

    下面是简单测试:

    var m1 = "message",m2 = true,m3 = 98,m4,m5 = {},m6 = null,m7 = function(){};
    
    console.log(typeof m1);
    console.log(typeof m2);
    console.log(typeof m3);
    console.log(typeof m4);
    console.log(typeof m5);
    console.log(typeof m6);
    console.log(typeof m7);

    Boolean类型的字面值true和false是区分大小写的,所有数据类型均可通过Boolean()转换函数转换为Boolean类型,对于Number类型,任何非零(包括无穷大)转换为true,0和NaN转换为false;对于Object类型来说,转换为true,null转换为false

    关于NaN:

    NaN(Not a Number)即非数值,是一个特殊数值,NaN有2个特点:

    • 任何涉及NaN的操作都会返回NaN
    • NaN与任何值都不相等,包括NaN本身

    关于NaN的测试如下:

    console.log(NaN / 10);    //NaN
    console.log(NaN / 0);      //NaN
    console.log(NaN == NaN);    //false
    console.log(isNaN(NaN));    //true
    console.log(isNaN(""));    //false
    console.log(isNaN(12));    //false
    console.log(isNaN("awd"));    //true
    console.log(isNaN("awd12"));    //true
    console.log(isNaN("12awd"));    //true
    console.log(isNaN(null));    //false
    console.log(isNaN({}));      //true  
    console.log(isNaN({valueOf:function(){      //false,如果是对象则调用其valueOf方法,查看返回是否匹配NaN
      return -1;
    }}));
    console.log(isNaN({valueOf:function(){      //true
      return "awdw";
    }}));

    关于Number()函数:

    Number()函数用于将一个非数值转换为数值类型,Boolean直接返回1或0,null返回0,undefined返回NaN,如果是字符串:空字符串返回0,非空返回去除前导0的字符值,比如"011"返回11,如果非数值字符串返回NaN,比如"this is test"返回NaN;如果是对象,则调用对象的valueOf方法返回。

    关于Object类型:

    创建:

    var o = new Object();

    Object的每个实例都有如下属性和方法:

    • constructor:保存着用于创建当前对象的函数
    • isPrototypeOf(object):用于检查传入的对象是否是传入对象的原型
    • hasOwnProperty(propertyName):用于检查给定的属性是否在当前对象实例中
    • propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用for-in 语句枚举
    • toLocaleString():返回对象的字符串表示,该字符串与执行环境的地区对应
    • toString():返回对象的字符串表示
    • valueOf():返回对象的字符串、数值或布尔值表示

    4、函数类型

    ECMAScript的函数支持不定参数,实际上通过arguments对象即可直接获取请求的参数,函数定义时可以不用指定参数,使用时也可以传入任意数量参数:

    function say(){
      for(var i=0,len=arguments.length;i<len;i++){
        console.log(arguments[i]);
      }
    }
    
    say(12,"343","1231");

    function say2(name,age){
      console.log(name);
      console.log(name == arguments[0]);
      console.log(age);
      console.log(age == arguments[1]);
    }
    
    say2("admin",23);

    ECMAScript的函数不支持重载,如果定义了2个同名函数,则第二个会覆盖第一个函数:

    function say(){
      console.log(1111);
    }
    
    say();      //2222
    
    function say(){
      console.log(2222);      
    }
    
    say();      //2222
  • 相关阅读:
    第一节:Node.js简介
    Socket实现java服务端与AndroidApp端数据交互
    zz Android Studio --“Cannot resolve symbol” 解决办法
    git 阿里云代码托管
    zzvisual studio系列(vs)启动调试网站使用ip+端口局域网访问
    阿里云的域名给七牛云的配置CDN和ssl
    win10 visual studio IIS Express 局域网调试,默认只能localhost
    window2012 iis8.0 配置https 默认居然是TLS1.1
    andriod 连接wcf ,HttpURLConnection FileNotFoundException
    zzWCF实现RESTFul Web Service
  • 原文地址:https://www.cnblogs.com/vipzhou/p/5908129.html
Copyright © 2011-2022 走看看