zoukankan      html  css  js  c++  java
  • 前端基础之JAVAScript

                                  JavaScript的历史

    • 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEase.(客户端执行的语言)
    • Netscape(网景)接收Nombas的理念,(Brendan Eich)在其Netscape Navigator 2.0产品中开发出一套livescript的脚本语言.Sun和Netscape共同完成.后改名叫Javascript
    • 微软随后模仿在其IE3.0的产品中搭载了一个JavaScript的克隆版叫Jscript.
    • 为了统一三家,ECMA(欧洲计算机制造协会)定义了ECMA-262规范.国际标准化组织及国际电工委员会(ISO/IEC)也采纳 ECMAScript 作为标准(ISO/IEC-16262)。从此,Web 浏览器就开始努力(虽然有着不同的程度的成功和失败)将 ECMAScript 作为 JavaScript 实现的基础。EcmaScript是规范

                      ECMAScript

    尽管 ECMAScript 是一个重要的标准,但它并不是 JavaScript 唯一的部分,当然,也不是唯一被标准化的部分。实际上,一个完整的 JavaScript 实现是由以下 3 个不同部分组成的:

    • 核心(ECMAScript) 
    • 文档对象模型(DOM) Document object model (整合js,css,html)
    • 浏览器对象模型(BOM) Broswer object model(整合js和浏览器)
    • Javascript 在开发中绝大多数情况是基于对象的.也是面向对象的.

    简单地说,ECMAScript 描述了以下内容:

    • 语法 
    • 类型 
    • 语句 
    • 关键字 
    • 保留字 
    • 运算符 
    • 对象 (封装 继承 多态) 基于对象的语言.使用对象.

                  JAVAScript引入方式

          Script标签内写代码

    <script>

     //  在这里写你的JS代码

    </script>

          引入额外的JS文件

    <script src="myscript.js"></script>

      

             注释(注释是代码之母)

    // 这是单行注释
    
    /*
    这是
    多行注释 */

    结束符

    JavaScript中的语句要以分号(;)为结束符。

    JavaScript语言基础

    变量声明

    1. JavaScript的变量名可以使用_,数字,字母,$组成,不能以数字开头。
    2. 声明变量使用 var 变量名; 的格式来进行声明
    var name = "Alex";
    var age = 18;

    注意:

    变量名是区分大小写的。

    推荐使用驼峰式命名规则。

    JavaScript数据类型

    JavaScript拥有动态类型

    var x;  // 此时x是undefined
    var x = 1;  // 此时x是数字
    var x = "Alex"  // 此时x是字符串 

    数字类型

    JavaScript不区分整型和浮点型,就只有一种数字类型。

    var a = 12.34;
    var b = 20;
    var c = 123e5;  // 12300000
    var d = 123e-5;  // 0.00123

    常用方法:

    parseInt("123")  // 返回123
    parseInt("ABC")  // 返回NaN,NaN属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。
    parseFloat("123.456")  // 返回123.456

    字符串

    var a = "Hello"
    var b = "world;
    var c = a + b; 
    console.log(c);  // 得到Helloworld

    常用方法:

    方法 说明
    obj.length 返回长度
    obj.trim() 移除空白
    obj.trimLeft() 移除左边的空白
    obj.trimRight() 移除右边的空白
    obj.charAt(n) 返回第n个字符
    obj.concat(value, ...) 拼接
    obj.indexOf(substring, start) 子序列位置
    obj.substring(from, to) 根据索引获取子序列
    obj.slice(start, end) 切片
    obj.toLowerCase() 小写
    obj.toUpperCase() 大写
    obj.split(delimiter, limit) 分割

    拼接字符串一般使用“+”

    布尔类型

    区别于Python,true和false都是小写。

    var a = true;
    var b = false;

    数组

    类似于Python中的列表。

    var a = [123, "ABC"];
    console.log(a[1]);  // 输出"ABC"

     常用方法:

    方法 说明
    obj.length 数组的大小
    obj.push(ele) 尾部追加元素
    obj.pop() 获取尾部的元素
    obj.unshift(ele) 头部插入元素
    obj.shift() 头部移除元素
    obj.slice() 切片
    obj.reverse() 反转
    obj.join(seq) 将数组元素连接成字符串
    obj.concat(val, ...) 连接数组
    obj.sort() 排序

    遍历数组中的元素:

    var a = [10, 20, 30, 40];
    for (var i=0;i<a.length;i++) {
      console.log(i);
    }

    null和undefined

    • undefined表示的是当声明的变量未初始化时,该变量的默认值是undefined。还有就是函数无明确的返回值时,返回的也是undefined。
    • null表示值不存在

    undefined表示声明了变量,但是还没有赋值。null声明了变量并且变量是空值。

    类型查询

    typeof "abc"  // "string"
    typeof null  // "object"
    typeof true  // "boolean"
    typeof 123 // "number"

    typeof是一个一元运算符(就像++,--,!,- 等一元运算符),不是一个函数,也不是一个语句。

    运算符

    算数运算符

    + - * / % ++ --

    比较运算符

    > >= < <= != == === !==

    注意:

    1 == “1”  // true
    1 === "1"  // false

    逻辑运算符

    && || !

    赋值运算符

    = += -= *= /=

    流程控制

    if-else

    复制代码
    var a = 10;
    if (a > 5){
      console.log("yes");
    }else {
      console.log("no");
    }
    复制代码

    if-else if-else 

    复制代码
    var a = 10;
    if (a > 5){
      console.log("a > 5");
    }else if (a < 5) {
      console.log("a < 5");
    }else {
      console.log("a = 5");
    }
    复制代码

    switch

    复制代码
    var day = new Date().getDay();
    switch (day) {
      case 0:
      console.log("Sunday");
      break;
      case 1:
      console.log("Monday");
      break;
    default:
      console.log("...")
    }
    复制代码

    for

    for (var i=0;i<10;i++) {
      console.log(i);
    }

    while

    var i = 0;
    while (i < 10) {
      console.log(i);
      i++;
    }

    三元运算

    var a = 1;
    var b = 2;
    var c = a > b ? a : b

    函数

    函数定义

    JavaScript中的函数和Python中的非常类似,只是定义方式有点区别。

    复制代码
    // 普通函数定义
    function sum(a, b){
      return a + b;
    }
    sum(1, 2)
    // 匿名函数方式
    var sum = function(a, b){
      return a + b;
    }
    sum(1, 2)
    // 立即执行函数
    (function(a, b){
      return a + b;
    })(1, 2);
    复制代码

    函数的全局变量和局部变量

    全局变量:定义在函数外部,并且推荐使用var进行显示声明

    局部变量:定义在函数内容,并且必须使用var进行显示声明

    作用域

    首先在函数内部查找变量,找不到则到外层函数查找,逐步找到最外层,即windows对象。

    内置对象和方法

    JavaScript中的所有事物都是对象:字符串、数字、数组、日期,等等。在JavaScript中,对象是拥有属性和方法的数据。

    我们在学习基本数据类型的时候已经带大家了解了,JavaScript中的Number对象、String对象、Array对象等。

    自定义对象

    类似于(某方面类似)Python中的字典数据类型

    var a = {"name": "Alex", "age": 18};
    console.log(a.name);
    console.log(a["age"]);

    遍历对象中的内容:

    var a = {"name": "Alex", "age": 18};
    for (var i in a){
      console.log(i, a[i]);
    }

    事情并没有那么简单...

    JavaScript中的面向对象

    Date对象

    复制代码
    var d = new Date(); 
    //getDate()                 获取日
    //getDay ()                 获取星期
    //getMonth ()               获取月(0-11)
    //getFullYear ()            获取完整年份
    //getYear ()                获取年
    //getHours ()               获取小时
    //getMinutes ()             获取分钟
    //getSeconds ()             获取秒
    //getMilliseconds ()        获取毫秒
    //getTime ()                返回累计毫秒数(从1970/1/1午夜)
    复制代码

    JSON对象

    复制代码
    var str1 = '{"name": "Alex", "age": 18}';
    var obj1 = {"name": "Alex", "age": 18};
    // JSON字符串转换成对象
    var obj = JSON.parse(str1); 
    // 对象转换成JSON字符串
    var str = JSON.stringify(obj1);
    复制代码
  • 相关阅读:
    [C++]野指针的产生以及应对办法
    [boost]使用boost::function和boost::bind产生的down机一例
    [C++]给C++封装一个多播委托
    [vim]clang complete不能智能提示mutex/thread的解决办法(请获取最新版的clang complete)
    [C++11]shared_ptr效率比较
    [C++]怎么样实现一个较快的Hash Table
    [C++]运行时,如何确保一个对象是只读的
    [libcxx]用gdb打印libcxx容器内的内容
    [thrift]thrift中的对象序列化
    [tolua++]tolua++中暴露对象给lua时,一定要把析构函数暴露给lua
  • 原文地址:https://www.cnblogs.com/zhuchuanbo/p/8118594.html
Copyright © 2011-2022 走看看