zoukankan      html  css  js  c++  java
  • JavaScript高级程序设计中第2、3章中细节知识点

    第2章

    1、<script src='script.js' type='text/javascript'></script>中,只要不包含defer和async属性,浏览器都会按照<script>元素在页面的出现顺序对它们依次进行解析。

    2、defer属性     <script>中的defer属性的用途是表明脚本在执行时不会影响页面的构造,即,脚本会被延迟到整个页面都解析完毕后在运行。所以设置了defer属性就是相当于告诉浏览器立即下载但延迟执行。

    defer=“defer”;

    3、async属性   <script type="text/javascript" async src="script.js"></script>指定async属性的目的是不让页面等待脚本下载和执行,从而异步加载页面其他内容。为此,建议异步脚本不要在加载期间修改DOM。

    4、嵌入外部script的好处:a、可维护性;b、可缓存,如果有两个页面都使用同一个文件,那么这个文件只需要下载一次,所以,最终结果就是能够加快页面加载的速度;c、适应未来。

    第3章

    1、在脚本中添加"use strict";  启用严格模式;

    2、数据类型:5中简单数据类型(也称为基本数据类型):Undefined Null Boolean Number String。1中复杂数据类型---Object。

    3、typeof操作符---“object”——如果这个值是对象或者null;“function”——如果这个值是函数。typeof是一个操作符而不是一个函数。

    4、undefined  对于未声明的变量只能执行一项操作,即使用typeof操作符检测其数据类型。

    var message;
    
    //未声明
    //var age;
    alert(message);                //undefined
    alert(age);                        //产生错误 
    
    alert(typeof message);      //undefined
    alert(typeof age);              //undefined

    5、Null    null表示一个空对象指针,所以使用typeof操作符检测null值时会返回‘object’。实际上,undefined是派生自null值的,所以alert(undefined == null);  //true;

    只要意在保存对象的变量还没有真正保存对象,就应该明确的让该变量保存null值。

    6、Boolean  要将一个值转换为其对应的Boolean值,可以调用转型函数Boolean();

    7、Number   八进制字面值的第一位必须是零(0),八进制数字序列(0—7)。如果字面值中的数值超出了范围,那么前导零将被忽略,后面的数值将被当作十进制数值解析。

    var num1 = 070;   //八进制的56;
    var num2 = 79;     //无效的八进制数值----解析为79;

    十六进制字面值前两位必须是0x;

    进行算术计算时,所有的八进制和十六进制表示的数值最终都将被转换成十进制数值。

    浮点数值的最高精度是17为小数。

    8、NaN    即非数值  是一个特殊的数值。首先, 0除以0返回NaN,正数除以0返回Infinity,负数除以0得-Infinity;其次,NaN与任何值都不相等,包括本身。

    9、String类型  字符串特点:字符串是不可变的,也就是,字符串一旦创建,它们的值就不能改变。要改变某个变量保存的字符串,首次要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量。

    var lang = "Java";
    lang  = lang + "Script";
    
    
    操作过程如下:首先创建一个能容纳10个字符的新字符串,然后在这个字符串中填充“Java”和“Script”,最后异步是销毁原来的字符串“Java”和字符串“Script”;

    关于toString()和String():toString()数值、布尔值、对象和字符串值都有这个方法;但是undefined和null没有这个方法。多数情况下,调用toString()方法不必传递参数

    var num = 10;
    num.toString(2);   //"1010";
    num.toString(8);   //"12";
    num.toString(16);  //"a";

    不知道要转换的值是不是null和undefined的情况下,可以使用String():1、如果值有toString()方法,则调用该方法并返回相应的结果;2、如果是null返回”null”,undefined返回“undefined”

    10、布尔操作符

    逻辑与&&:逻辑与操作属于短路操作,即如果第一个操作数能够决定结果,那么不会再对第二个操作数求值

    逻辑或||:如果第一个操作数的求值结果为true,就不会对第二个操作数求值了。

    11、相等和不相等(==  ===  !=  !==):如果有一个操作数是布尔值,则在比较相等性之前先将其转换为数值——false转换为0,true转换为1;

    如果一个操作数是字符串,另一个操作数是数值,在比较相等性之前先将字符串转换为数值。

    12、理解参数(arguments):(1)即便定义的函数只能接收两个参数,在调用这个函数时也未必一定要传递两个参数,可以传递一个、两个、三个甚至不传递参数,原因是参数在函数内部是用一个数组来表示。实际上,在函数体可以通过arguments对象来访问这个参数数组,从而获取传递给函数的每一个参数。其实,arguments对象只是与数组类似,可以使用方括号语法访问它的每一个元素;(2)arguments对象可以与命名参数一起使用

    function doAdd(num1,num2){
       if(arguments.length == 1){
           alert(num1 + 10);
    }  else if(arguments.length == 2){
    
        alert(arguments[0] + num2);
    }
        
    }

    (3)arguments的值永远与对应命名参数的值保持同步

    function doAdd(num1,num2){
       arguments[1] = 10;
    alert(arguments[0] + num2);
    
    }
    这并不是说读取这两个值会访问相同的内存空间,arguments[1] 和 num2 的内存空间的独立的,但是它们的值是同步的。如果值传入一个参数,那么arguments[1]设置的值不会反应到命名参数中。
    没有传递值的命名参数将自动被赋予undefined值。

    13、如果定义了两个名字相同的函数,则该名字只属于后者定义的函数。

  • 相关阅读:
    ASP.NET上传文件的三种基本方法
    实例分析 equals 和 ==
    如何保证Web Service的安全
    Winform动态显示图片,数据流方式
    C# 文件保存到数据库中或者从数据库中读取文件
    简说Session
    NotifyIcon的简单使用
    c# Invoke和BeginInvoke 区别
    DataGridView 的 CurrentCellDirtyStateChanged事件用法
    十种发送邮件的方式
  • 原文地址:https://www.cnblogs.com/deerfig/p/7121958.html
Copyright © 2011-2022 走看看