zoukankan      html  css  js  c++  java
  • Javascript高级程序设计第二版前三章基本数据等笔记

    第一章.         JavaScript 简介

    第二章.         JavaScriptHTML

    --------今天开始跟诸位分享JavaScript高级程序设计第二版,第二遍阅读,第一章-第三章,基本数据。

     

    JavaScript的历史就不多说,这里主要澄清一下它现在模糊而有强大的组成部分。说模糊是因为好多人对JS的真正的组成并不了解,说强大是因为这个语言的并不是像想象中的那么弱不禁风,而是非常之强大,强大到连语言创作者本身都没有想到能如此的强大。

    自从1997年,javascript 1.1提交给ECMA(欧洲计算机制造商协会)以来,ECMAscript(ek ma script)一直是被视为javascript实现的基础,浏览器开发商致力于将ECMAScript作为各自JavaScript实现的基础,也在不同程度上取得了成功。这当中傲视群雄的当属FireFoxECMAscritp 262 已经有第四版了,但是第三版是各浏览器实现最多的一个版本。所以基本概念部分完全按照第3版定义的ECMAScript为最终标准。而实现ECMAscript的常见的有:javascript,actionscript,所以它们俩是亲兄弟。而完整的javascript则包括:核心js(ECMAScript),浏览器对象模型(BOM),文档对象模型(DOM)三部分。

    DOM实现上浏览器也各有区别:

    Opera 9+   1级,2(几乎全部)3(部分)

    Safari 2+     1级,2(部分)

    Chrome 0.2+ 1级,2(部分)

    Firefox 1+     1级,2(几乎全部)3级部分

    IE5.5-7       1(几乎全部)

    第三章.         HTML中使用JavaScript

    2.1 defer属性

    作用:这个属性如被添加,则表示脚本会被延迟到整个页面都解析完毕后再运行

    <script defer=”defer” scr=”xxx.js”></script>

          很遗憾这个属性只有ie,ff支持

    2.2 <noscript>

    表示当浏览器不支持JavaScript时让页面平衡的退化

    <noscript>

             <p>本页面需要浏览器支持(启用)JavaScript

    </noscript>

    第三章. 基本概念

    3.1 语法:

    3.1.1标识符:就是指变量、函数、属性的名字,或者函数的参数。它只能以数字,下划线,美元符号开始的,后边的组成也只能是以数字,下划线,美元符号等。也可以是ASCIIUnicode,但不推荐。

    3.1.2  js区分大小写

    3.1.3 js注释:跟c语言java相似

    唯一的一点是在aptana工具里边,能形成像JavaDoc一样的注释。

     /**

     * function add

     * @param {Object} a

     * @param {Object} b

     */

    function add(a, b){

        return a+b;

    }

    3.1.4 语句:

    可以省略分号结尾,但不推荐

    3.2 关键字:

    ECMAScript里边具有特定功能的单词组合叫关键字。它用于控制语句开始和结束,或用于执行特定操作。按照规则:关键字不能用于做标识符。

       break,else,new,var,case,finally

       保留字:将来留用的关键字。

       abstract,int,short,byte,boolean,goto,public

    3.3 变量,

    变量就是存储数据的一个内存块,与其它语言不同的是js的变量可以保存任何类型的数据。

             var msg;

             未初始化的会保存一特殊的值:undefined

             变量量如果省略var,则成为危险的全局变量

          3.4.1 typeof 操作符

             undefined, boolean,string,number,object,function

          3.4.2 Undefined类型

             这个类型只有一个值undefined

    在使用变量之前未加以初始化时,这个变量的值就是undefined

    3.4.3 Null类型

    这个类型也只有一个值null。从逻辑角度看,null值表示一个空对象指针

    如果定义的变量将来要存储对象,那最好将该变量初始化为null,这样直接检查null值就可以知道相应的变量是否已经保存了一个对象的引用了。

             undefined 派生自null

             alert(null == undefined); // ouput true ==操作符出于比较的目的会转换其操作数 ===操作则不会

          3.4.4 Boolean 类型

    只有两个值:true false 由于js区分大小写,trueTrue,falseFalse都不是一个值

    3.4.5 Number类型

    八进制以8为基数,(0)为始位。

    十进制以10为基数,没有始位

    十六进制以16为基数,(0x)为始位

    1.       浮点数

    浮点数计算会产生误差

    0.2 + 0.3 != 0.5

    浮点数最高精度是17位小数

    2.       数值范围

    由于内存的限制,js不能保存世上所有的值。最小值5e-324,最大值一长串,真没必须记忆。(1.797693e+308)。如果计算超过这两个值,则用Infinity(正无穷) –Infinity(负无穷)

    3.       NaN(Not a Number)

    是一个特殊的值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况。

    有两个特点:

    a). NaN的操作都会返回路径NaN

    b). NaN与任何值都不相等,包括NaN本身

    alert(NaN == NaN) // output false

    isNaN() //这个函数帮我们确定这个参数是否“不是数值”

    它接受到一个参数时,试图想转换为数值类型,转换不了则返回true

    4.       数值转换:

    a)         Number()

    可以用于任何数据类型

    后两个则专门用于把字符串转换成数值

    1.         true 转换为1, false 转换为0

    2.         null 转换为0

    3.         如果字符串中包含有十六进制格式,则将其转换为相同大小的十进制整数值

    b)         parseInt()

    不会忽略前导零,会以八进制方式来解析

    会自动识别八进制,十进制,十六进制

    也可以提供第二个参数:转换时使用的基数(多少进制)

    c)         parseFloat()

    忽略前导零

    没有第二个参数

          3.4.6 String类型

             用于表示零或多个16Unicode字符组成的字符序列。

    字符串可用单引号(‘ ’),双引号(“ ”)来表示

    1.       字符字面量

    转义序列:\n 换行, \t 制表 \b 空格

    2.       转换为字符串

    a). tostring() 可以接受一个参数,表示基数

    数值,布尔值,对象和字符串都有toString()方法

    b). 可以使用转型函数String()

    在不知道要转换的值是不是nullundefined的情况下,使用String();这个函数能将任何类型的值转换为字符串。

     

    3.4.7 Object类型

    js中的对象就是一组数据和功能的集合

    a). constructor – 保存着用于创建当前对象的函数

    b). hasOwnProperty(propertyName) – 用于检查给家的属性在当前对象实例中(而不是在实例的原型中)是否存在

    var o = new Object(); //没有参数()可以省略

    o.hasOwnProperty(‘name’);

    c). isPrototypeOf(object) – 用于检查传入的对象连接是否是另一个对象的原型

    d). propertyIsEnumerable(propertyName) – 用于检查给定的属性是否能够使用for-in语句来枚举。

    e). toString(), valueOf()

          3.5 操作符

          3.5.1 一元操作符

             递增递减操作符

             var age = 29;

             ++age; //先加后使用

             var anotherAge = age + 2; // 32;

             age++ //先使用后加

             var num1 = 2;

             var num2 = 20;

             var num3 = num1-- + num2; //22

             var num4 = num + num2; //21

          3.5.2 位操作符

             // 用的不多,等回头有空在补上

    1.       按拉非

    var num1 = 25 //二进制00000000000000000000000000011001

    var num2 = ~num1 //二进制 11111111111111111111111111111110

    alert(num2) // -26

    2.       按位与 &

    3.       按位或 |

    4.       按位异或 ^

    5.       按位左移 <<

    6.       有符号右移 >>

    7.       无符号右移 >>>

    3.5.3 布尔操作符

    1. 逻辑非 !

    2. 逻辑与 &&

    3. 逻辑或 ||

    3.5.4 乘性操作符

    1. 乘法 *

    2. 除法 /

    3. 求模(余数) %

    3.5.5 加性操作符

    3.5.6 关系操作符

    a)         如果两个操作数是数值,则执行数值比较

    b)         如果两个操作数是字符串,则比较两个字符串对应的字符编码值

    c)         如果一个操作数是数值,则将另一个操作数转换为一个数值,然后进行比较

    d)         如果一个操作数是对象,则调用这个对象的valueOf()方法,用得到的结果按照前面的规则执行比较。如果对象没有valueOf()方法,则调用toString()方法,并用得到的结果根据前面的规则执行比较

    e)         如果一个操作数是布尔值,则先将其转换为数值,然后再执行比较

    3.5.7 相等操作符

    相等和不相等(==):先转换再比较

    全等和不全等(===):仅比较而不转换

    3.5.8 条件操作符

    var max = (num1 > num2) ? num1 : num2

    3.5.9 赋值操作符

    var a = ‘豪情’;

    3.5.10 逗号操作符

    var num = (4,5,1); //num 1;

            

    6. 操作符:

       加减操作符:

       var age = 29;

       ++age;//先加后使用

       相当于age = age + 1;

     

       var age = 29;

       age++;//先使用后加

      

       还有其它乖除等等  

    3.6 语句

    3.6.1 if语句

    3.6.2 do-while语句

             在对条件表达式求值之前,循环体内的代码至少会执行一次

    3.6.3 while语句

    3.6.4 for语句

    3.6.5 for-in语句

    for-in语句是一种精准的迭代语句,用来枚举对象的属性。

    for(var pro in window){

             document.write(pro + ‘<br>’);

    }

    3.6.6 label语句

    3.6.7 break,continue语句

    1.         break 语句会立即退出循环,强制继续执行循环后面的语句

    2.         continue 退出本次循环后从循环的顶部继续执行下一次循环

    3.6.8 with语句

             虽然能延续作用域,但是效率不高,不推荐使用

    3.6.9 switch语句

    3.7 函数

    arguments 是一个类数组,有数组的特性,可以用下标访问,有长度,但它不是数组对象的实例。

    函数没有重载,只有覆盖,不像Java,倒像css

    如果定义两个相同函数的名字,只会执行后定义的函数。

  • 相关阅读:
    vim 查找文件指定内容所在位置
    tar 使用小技巧
    dpkg 安装deb包
    Jetbrains 全家桶(IDEA,PyCharm...)
    Python如何生成requirements.txt文件
    MySQL——导入数据报字段编码错误
    视图的概念、作用以及如何创建
    hive与hbase及MySQL的区别
    mysql—排序函数rank() over()、dense_rank() over()、row_num() over()
    mysql —net start mysql 命令发生系统错误5和错误1058的解决方法
  • 原文地址:https://www.cnblogs.com/jikey/p/1812340.html
Copyright © 2011-2022 走看看