javascript入门进阶(一)

javascript 入门进阶

这里主要讲解一下在入门阶段很难注意的一些知识点,不一定有用。但是会了总比不会强。
1.HTML为<script>标签准备的6个属性:
-async:可选。表示应该立刻下载脚本,但不应妨碍页面中的其他操作。(其他的下载可以等待)
-charset:可选。表示通过src指定的代码的字符集。
-defer:可选。表示脚本可以延迟到文档被解析和显示之后在执行。该版本值对外部JavaScript有效果
-src:可选。执行代码的外部文件。
——type:可选。编写代码使用的脚本语言的内容类型。



几个小例子:
defer的先后出现次序

<!doctype html>
<html>
<head>
<script defer src="test.js"></script>
<script defer src="test2.js"></script>
    </head>
    <body>

    </body>
</html>

HTML要求脚本按照他们出现的先后顺序执行,因此第一个延迟脚本会先于第二给延迟脚本执行。就是test1.js会先执行。因此最好只包含一个延迟脚本。

:fa-star:defer属性只适用于外部脚本文件。



async的异步响应:

<!doctype html>
<html>
<head>
<script async src="test.js"></script>
<script async src="test2.js"></script>
    </head>
    <body>

    </body>
</html>

第二个脚本文件可能会在第一个脚本文件之前执行。
:fa-star:async属性只适用于外部脚本文件。


2.JavaScript执行

javascript解释过程包括两个阶段,预处理(预编译)执行。在预编译期,JavaScript解释器将完成对JavaScript代码的预处理操作,把JavaScript代码转换为字节码;在执行期,JavaScript解释器的字节码生成二进制机械码,并且按照书序执行,完成程序设计的任务。

预编译包括词法分析和语法分析。词法分析主要对JavaScript脚本进行逐一分析,检查脚本是否呼和JavaScript规范,是否存在语法错误

HTML文档在浏览器中的解析过程是:按文档流从上到下逐步解析页面的结构和信息。javascript代码作为嵌入的脚本应该也算做HTML文档的组成部分。所以JavaScript代码在装载时的执行顺序也是根据<script>的标签出现的顺序来确定的。


预编译

当JavaScript引擎解析脚本时,他会在预编译期对所有的声明的变量和函数预先进行处理。

alert(a);//返回undefined
var a=1;
alert(a);//返回1

JavaScript解释器是按照代码先后顺序进行解析的,如果在前面代码行中没有为变量赋值,则JavaScript解释器会使用默认值undefined。

f();//调用函数,显示语法错误。
avr f=function f(){
    alert(1);
}

在预编译器JavaScript解释器只能为了声明变量f进行处理,而对于变量f的值,只能等到执行期时按顺序进行赋值,自然就会出现语法错误。



onload事件只有在文档加载完毕才会响应,因此为了运行安全,一般设计在页面初始化完毕之后才允许JavaScript代码执行,这样就可以避免因为代码加载延迟对JavaScript执行的影响。

3.错误处理

JavaScript是松散型的,不会验证函数的参数,因此错误只会在代码运行期间出现。

错误类型

-ERROR:普通异常,通常和throw和trycatch语句一同使用。利用属性name可以声明或了解异常的类型,利用message属性可以设置和读取异常的详细信息。

  • EvalError:在不正确使用eval()方法时抛出。
  • SyntxError:抛出语法错误。
  • RangerError:在数字超出合法范围时抛出。
  • TypeError:当一个值得类型错误是抛出该异常。在变量中保存意外的类型,或者在访问不纯在的方法时,都会导致
  • URIError:由URI的编码和编码方法抛出。


这些代码抛出了一个通用错误,其中有一跳自定义错误。

var e = new Error('Could not parse input');
// e.message is 'Could not parse input'
throw e;

这个方式主要是应用在上千行代码的程序中,你可以抛出一个带有包含了函数的名称,以及为什么会发生错误的明确描述。如果一个复杂的WEB程序发生了这个错误,那么查找问题的根源也容易多了。



错误事件
在任何web浏览器中,onerror事件处理程序都不会创建event对象,但是他可以接受三个参数;错误消息,,错误消息所在的URL和行号。
但是有些时候只有错误消息才会有用。剩下两个在有些情况下不能准确的完成一些事情。

window.onerror=function(message,url,line){
    alert(message);
}

只要发生错误,无论是不是浏览器生成的都会触发error事件。并且执行这个处理程序。然后浏览器默认的机制发挥作用。
但是也可以通过以下方式,来组织浏览器报告错误的默认行为。

window.onerror=function(message,url,line){
    alert(message);
    return false;
}

通过返回false,这个函数实际上是充当了整个文档中的trycatch语句,可以捕获所有无代码处理的运行时的错误,可以说是避免浏览器错误报告的最后一道防线。


3.标识符

标识符是表示名称的意思,有以下几条规则。

  • 第一个字符必须是字母,下划线(_)或美元$符号。
  • 除了第一个字符之外,其他位置的自负可以使用字母,数字,下划线,美元符号。
  • 标识符名称不能与JavaScript关键字或保留字同名。
  • 可以在标识符中使用Unicode转义序列。


    允许用户不声明变量,而直接为变量赋值,因为JavaScript解释器能够自动隐式声明变量。但是隐式声明的变量总是作为全局变量而存在的。

    function f(){
        a=1;//不声明变量
        var b=2;
    }
    f();
    alert(a);//返回1
    alert(b);//提示语法错误,找不到该变量。


    函数未调用之前,函数内部定义的全局变量是无效的,这是因为在JavaScript预编译器,仅对函数名,函数内各种表示符建立索引。
    只有当JavaScript执行其时,才按照顺序为变量进行赋值,并初始化。而在执行期,如果函数未被调用,则函数内代码是不被解析的,所以才有了如下情况。

    function f(){
        a=1;
        var b=2;
    }
    try{
        alert(a);//尝试读取变量。
    }catch{
        alert(e.message);//显示错误信息,变量a未定义
    }
    f();//调用函数
    alert(a);//读取全局变量a,返回值为1


    变量的作用域

全局作用域是指变量在整个页面脚本中都是可见的,可以自由访问。
局部作用域是指变量仅能在生命的函数内部可见,函数外是不允许访问的。

全局变量是所有全局变量的容器在web浏览器中,全局对象名为windows
上面的话是这个意思

var f=123;
window.f=123;//两者的意思是一样的。
//下面有一个小知识
f=123//隐式全局变量,刚才讲过。以这种方式定义的全局变量被称为隐式的全局变量

4.数据类型

  • number

    • javascript数值类型不再细分整形,浮点型,所有数值都属于浮点型。
    • 数值直接量可以细分为整形直接量和浮点型直接量。浮点数就是带有小数点的数值,而整数是不带小数点的数。
      var int=1;//整形数值
      var float =1.0//浮点型数值
      +toString()是一个非常实用的办法,它可以根据所传递的参数把数值转换为对应进制的数值字符串
    var a=32;
    document.writeln(a.toSting(2));//返回二进制字符串
    document.writeln(a.toSting(4));//返回字符串200
    document.writeln(a.toSting(16));//返回字符串20
    document.writeln(a.toSting(30));
    document.writeln(a.toSting(32));
    //对于直接量,不能直接调用toString();必须加一个()
    document.writeln((32).toSting(2));
  • 字符串
  • 布尔值
  • NULL
    • Null类型只有一个值,即null,他表示空值。
    • typeof运算符检测null,返回Object,表名它属于对象类型。
  • Undefined
    • undefined是Undefined类型的唯一值,他表示未定义的值。当声明变量为赋值时,或者定义属性未设置值时,默认他们的值为undefined。

几个小例子

**使用constructor检测类型
对于对象,数组等复杂数据,可以使用Object对象的constructor属性进行检测。constructor表示构造器,概述性质引用的是构造当前对象的函数。

var o={};
var a=[];
alert(o.constrcutor==Object);//返回true
alert(o.constrcutor==Array);//返回true

**但是对于undefined和null特殊值就不能够使用constructor属性,要不然会抛出异常,你必须确定,其中是true

原文地址:https://www.cnblogs.com/yanzezhong/p/12403426.html

时间: 2024-10-10 19:29:54

javascript入门进阶(一)的相关文章

JavaScript入门学习书籍的阶段选择

对于许多想学习 JavaScript 的朋友来说,无疑如何选择入门的书籍是他们最头疼的问题,或许也是他们一直畏惧,甚至放弃学习 JavaScript 的理由.在 JavaScript 方面,自己不是什么专家,也不是什么高手,但自己一路走来,JavaScript 从迷茫到认识,对于JavaScript 书籍的认识或许还有些借鉴价值.入门推荐首选书籍:<JavaScript DOM 编程艺术>当初读了不下 4 遍,书内容简单,易学,上手快,编程思想严谨.好的入门书,对你未来的编程都会有着深远的影响

JavaScript入门--慕课网学习笔记

 JAVASCRIPT-(慕课网)入门篇 我们来看看如何写入JS代码?你只需一步操作,使用<script>标签在HTML网页中插入JavaScript代码.注意, <script>标签要成对出现,并把JavaScript代码写在<script></script>之间. <script type="text/javascript">表示在<script></script>之间的是文本类型(text),ja

JavaScript入门:005—JS基本语句

JS的基本语句如下.主要看看循环语句和选择语句.循环语句1.for循环 for(var i=1;i<100;i++){ //代码 } 2.do...while循环 var i = 0; do { i++; //代码 }while(i<100); 3.遍历 var array = new Array(); array[0] = "你懂的"; array[1] = "over"; array[2] = "呵呵"; array[3] = &

Javascript入门视频教程

1,第一节 http://pan.baidu.com/play/video#video/path=%2F%E6%95%99%E5%AD%A61.mov&t=-1 2,第二节 http://pan.baidu.com/play/video#video/path=%2FJavascript%E6%95%99%E7%A8%8B2.mov&t=-1 Javascript入门视频教程,布布扣,bubuko.com

Hadoop入门进阶步步高(六)-Hadoop1.x与Hadoop2的区别

六.Hadoop1.x与Hadoop2的区别 1.变更介绍 Hadoop2相比较于Hadoop1.x来说,HDFS的架构与MapReduce的都有较大的变化,且速度上和可用性上都有了很大的提高,Hadoop2中有两个重要的变更: l HDFS的NameNodes可以以集群的方式布署,增强了NameNodes的水平扩展能力和可用性: l MapReduce将JobTracker中的资源管理及任务生命周期管理(包括定时触发及监控),拆分成两个独立的组件,并更名为YARN(Yet Another Re

&lt;javascript入门&gt;基本语法

<javascript入门>基本语法一.什么是javascript?javascript语言有什么特点?脚本语言的特点?    1.如果说css是给html页面进行化妆装饰以使html页面更加美观漂亮,那么javascript就是对html中DOM树上的节点进行增删改以使html页面实现动态的效果.    2.javascript语言是一种基于面向对象的.弱类型的.平台无关性的.安全性的语言.之所以说javascript基于面向对象是说它不是一种纯粹的面向对象,而是需要面向对象时即面向对象,需

JavaScript入门:001—概述

关于JavaScript JavaScript针对html页面进行交互行为:JavaScript是脚本语言,解释执行的:JavaScript可以直接嵌入html页面,也可以是个.js文件加载到html页面执行: JavaScript是免费的. JavaScript的作用 JavaScript是为html页面提供的编程工具 即使不是程序员也可以使用javascript进行页面的设计和美化,只需写一段javascript程序即可.JavaScript能响应事件 在html元素上设置一个事件,当事件被

Hadoop入门进阶步步高(一)-环境准备

前言 Hadoop从存储上来说,是类似于冗余磁盘阵列(RAID)的存储方式,将数据分散存储并提供以提供吞吐量,它的存储系统就是HDFS(Hadoop Distuibute Fils System):从计算上来说,它通过MapReduce模型,将大数据的计算分发到多台计算机上完成,再将结果合并,减少计算的时间. Hadoop适合于: 1.超大数据的计算: 2.一次写入.多次读取的模式: 3.可以跑在普通的硬件上. Hadoop不适合: 1.低延迟的数据访问,它是为高数据吞吐量应用优化的: 2.大量

Hadoop入门进阶步步高(二)-目录介绍

二.Hadoop目录结构 这里重点介绍几个目录bin.conf及lib目录. 1.$HADOOP_HOME/bin目录 文件名称 说明 hadoop 用于执行hadoop脚本命令,被hadoop-daemon.sh调用执行,也可以单独执行,一切命令的核心 hadoop-config.sh Hadoop的配置文件 hadoop-daemon.sh 通过执行hadoop命令来启动/停止一个守护进程(daemon). 该命令会被bin目录下面所有以"start"或"stop&quo