《js高级程序设计》学习笔记1(章节2、3)

前言:这个系列不是这本书的一个系统性教程,只是我自己看下来的一种非完全性的学习。

JavaScript高级程序设计(第3版)非扫描版 PDF:

链接:https://pan.baidu.com/s/1TkSaAFoHRNy6p6JQj8jy6Q

提取码:0cq7

 

第2章——在HTML中使用javaScipt

2.1<script>元素

HTML4.01为<script>属性提供了6个属性:

async:可选。异步脚本。表示应该立即下载脚本,但不应妨碍页面中其它操作,支队外部脚本文件有效。

charset:可选。通过sec属性指定的代码的字符集。

defer:可选。延迟脚本。表示脚本可以延迟到文档完全被解析和显示之后再执行。

language:已废弃。

src:可选。表示包含要执行代码的外部文件。

type:可选。可以看成是language属性,表示编写代码使用的脚本语言的内容类型。

 

√在<head>元素中包含所有JavaScript文件,意味着必须等到全部JavaScript代码被下载、解析和执行完成之后,才开始呈现页面的内容。这会出现页面延迟,所以一般将JavaScript放在</body>之前。

 

2.2嵌入代码与外部文件

采用外部文件的好处:可维护性,可缓存,适应未来。

 

2.4<noscript>元素

√当浏览器不支持JavaScript时创造一个<noscript>元素,用以显示替代内容。

·浏览器不支持脚本。

·浏览器支持脚本,但脚本被禁用。

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>Example</title>
  <script type="text/javascript" defer="defer" src="Example1.js">
  </script>
  <script type="text/javascript" defer="defer" src="Example2.js">
  </script>
</head>

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

</html>

第3章——基本概念

3.1语法

√ECMAScript5引入了严格模式(strict mode)的概念。在严格模式下ECMAScript3中的一些不确定的行为将得到处理,而且对某些不安全的操作也会抛出错误。

√要在整个脚本中启用严格模式,可以在顶部添加如下代码:

“use  strict”;

√在函数内部上方包含这条编译指示(pragma),也可以指定函数在严格模式下执行:

function doSomething() {
      "use strict";
      //函数体
}

 

3.2关键字和保留字

关键字

break

do

instanceof

typeof

case

else

new

var

catch

finally

return

void

continue

for

switch

while

debugger

function

this

with

defalut

if

throw

 

delete

in

try

 

保留字

abstract

enum

int

short

boolean

export

interface

static

byte

extends

long

super

char

final

native

synchronized

class

float

package

throws

const

goto

private

transient

debugger

implements

protected

volatile

double

import

public

 

3.3变量

function test() {
      message = 'hi'; //全局变量
    }
    test();
alert(message);

√(不推荐做法)省略了var操作符,因而message变成了全局变量。这样,主要调用过一次test()函数,这个变量就有了定义,就可以在函数外部的任何地方被访问到。

 

3.4数据类型

√5种基本数据类型:Undefined、Null、Boolean、Number、String

√1种复杂数据类型:Object

 

√有3个函数可以把非数值转换成数值:Number()、parsent()、parseFloat()

var num1 = parseInt('1234blue'); //1234
var num2 = parseInt(" "); //isNaN
var num3 = parseInt("0xA"); //10(十六进制数)
var num4 = parseInt("22.5"); //22
var num5 = parseInt("070"); //56(八进制数)
var num6 = parseInt("70"); //70
var num7 = parseInt("0xf"); //15(十六进制数)
var num8 = parseInt("AF",16);//175(十六进制数)

√parseFloat只解析十进制

 

3.6语句

for-in语句

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

function Test() {
      var txt = ['banana', 'apple', 'strawberry', 'pear'];
      var x;
      var text = '';
      for (x in txt) {
        text += txt[x];
      }
      document.write(text);
}

label语句

√书本中讲的不多,我推荐一篇博客吧:

JavaScript中label语句的使用

https://blog.csdn.net/creabine/article/details/62228145

 

break与continue语句

√这两个语句我们都是很熟悉的,我这边主要是结合label语句来学习。

 

①break

function Test() {
      var num = 0;
      for (var i = 1; i < 10; i++) {
        if (i % 5 == 0)
          break;
        num++;
      }
      document.write(num);
}

这里,当i递增到5的时候,for循环了4次,所以num=4

 

②continue

function Test() {
      var num = 0;
      for (var i = 1; i < 10; i++) {
        if (i % 5 == 0)
          continue;
        num++;
      }
      document.write(num);
}

这里,当i递增到5的时候,for循环了4次,跳过这个循环,继续下一个循环,直到i=10,又运行了4次,所以最后num=8

 

③break与label

function Test() {
      var num = 0;
      for (var i = 0; i < 10; i++) {
        for (var j = 0; j < 10; j++) {
          if (i == 5 && j == 5)
            break;
          num++;
        }
      }
      document.write(num);
}

本来要运行100次,但是加了break,中间当i=5,j=5的时候,中止了内部循环,下一个循环从i=6,j=0开始,也就是少了5次循环,所以最后num=95

 

加上label标签

function Test() {
      var num = 0;
      outermost:
        for (var i = 0; i < 10; i++) {
          for (var j = 0; j < 10; j++) {
            if (i == 5 && j == 5)
              break outermost;
            num++;
          }
        }
      document.write(num);
    }

这时候运行到55的时候,break直接终止了两个循环,所以最后num=55

 

④continue与label

function Test() {
      var num = 0;
      for (var i = 0; i < 10; i++) {
        for (var j = 0; j < 10; j++) {
          if (i == 5 && j == 5)
            continue;
          num++;
        }
      }
      document.write(num);
}

只跳过了一次循环,所以最后num=99

function Test() {
      var num = 0;
      outermost:
        for (var i = 0; i < 10; i++) {
          for (var j = 0; j < 10; j++) {
            if (i == 5 && j == 5)
              continue outermost;
            num++;
          }
        }
      document.write(num);
}

跳过了一个大循环,所以最后num=95

 

with语句

√with语句的作用是将代码的作用域设置到一个特定的对象中。

√定义with语句的目的主要是为了简化多次编写同一个对象的工作。

      var qs = location.search.substring(1);
      var hostName = location.hostname;
      var ur1 = location.href;
with(location) {
        var qs = search.substring(1);
        var hostName = hostname;
        var ur1 = href;
      }

3.7函数

√由于不存在函数签名的特性,ECMAScript函数不能重载。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值