JS高级程序设计学习笔记1

javascript产生的原因:

在拨号上网时代,表单数据必须发送到服务器端才能验证输入值得有效性,JavaScript的研发就是为了解决这个问题,以便在客户端就验证输入值的有效性。

ECMAScript/JavaScript:

JavaScript是Netscape公司于1995年发布的脚本语言,ECMAScript是欧洲计算机制造商协会定义的一种通用、跨平台、供应商中立的脚本语言的语法和语义。

一个完整的JavaScript实现包含:

  1. 核心(ECMAScript):由ECMA-262定义,提供核心语言功能;
  2. 文档对象模型(DOM):原本针对XML,但经过扩展针对HTML的API。
  3. 浏览器对象模型(BOM):提供与浏览器交互的方法和接口;

加快页面加载的两个合理方法:

  1. 将JS的<script>标签放在页面底部。
  2. 在<script>标签中加上async属性。

Number类型:

数值转换共有三个函数:Number(), parseInt(), 和 parseFloat()。

Number()转换规则:

  • 布尔值转换为0和1.
  • 数字只是简单传入和返回
  • null值返回0
  • undefined,返回NaN
  • 如果是整数、浮点数、十六进制,都会转换成十进制后相应的数,忽略前导0。
  • 空字符串转换为0,其他的为NaN
  • 如果是一个对象,先调用valueof()方法,依据前面的规则转换,如果是NaN,再调用toString()方法,再按前面的规则转换。

parseInt()转换规则:

忽略字符串前面的空格,直到前面找到第一个非空格字符。如果不是数字字符或负号,则会返回NaN。直到解析到第一个非数字位置。最好为该函数提供第二个参数,转换时使用的基数。

parseFloat()转换规则:

只解析十进制,十六进制等会被返回0。且只解析一个小数点。

String类型:

toString()方法:

1.适用数值类型:数值、布尔值、对象和字符串。

2.对于数值类型可以传递一个参数,作为转换的基数。

string()方法:

1.可以转换任何类型,null和undefined返回本身。

操作符:

1.一元操作符

  • 前置递增递减操作符会在语句被求值以前改变变量的值。
  • 后置递增递减操作符是在语句被求值以后改变变量的值。

2.位操作符

  • ~按位非(NOT)返回数值的补码。
  • &按位与(AND),将数值转换为2进制,每一位对齐,两个对应位都是1时返回1,否则返回0.
  • |按位或(OR),有一个位是1就返回1.
  • ^按位异或(XOR),只有一个位为1是才返回1,否则返回0
  • <<左移,将数值的所有位向左移动指定的位数,左移不影响符号位
  • >>有符号右移,将数值向右移动,左边以符号位来填充所有的空位
  • >>>无符号右移,正数不影响,但是负数左边以0填充,会使其值非常大

3.布尔操作符

  • 逻辑与和逻辑或是短路操作符,只要第一个操作符的求值结果为true,就不会对第二个进行求值。

4.条件操作符

variable = boolean_expression ? true_value : false_value;

语句:

1.do-while语句:一种后测试循环语句,最常用于循环体中的代码至少要被执行一次。

2.while:前测试循环语句。

3.for:前测试循环语句

4.for-in:精准的迭代语句,用来枚举对象的属性。

5.switch语句:

1 switch(expression){
2     case value:statement
3     break;
4     default:statement;
5 }

6.函数:函数的return 语句可以有返回值,也可以没有,没有返回值的意思是希望提前停止函数执行而且不需要返回值。

7.函数:js不介意传多少参数,也有不介意类型,函数体内可以通过arguments对象来访问这个参数数组,从而获取传递给函数的每一个参数。命名参数只是提供便利,但不是必须的。

8.js没有重载,两个名字相同的函数,该名字只属于后定义的函数。

基本类型和引用类型的值:

1.基本类型是指简单的数据段,也就是5种基本数据类型。这5种基本数据类型是按值访问的,可以操作保存在变量中的实际值。

2.引用类型指的是那些可能有多个值构成的对象。操作对象时,实际上是在操作其引用,引用类型的值是按照引用访问的。引用类型的值可以动态地添加属性。

复制变量值:

1.复制基本类型的值,会在变量对象上创建一个新值,然后把该值复制到为新变量分配的位置上,此后这两个变量可以参与任何操作而不会相互受影响。

2.对于引用类型的复制,会将储存在变量对象中的值复制一份放到为新变量分配的空间中。但这两个副本实际上是同一个指针,复制结束后,两个变量实际上将引用同一个对象,因此改变其中一个变量,就会影响另一个变量。

传递参数:

ECMAScript中的所有函数的参数都是按值传递的。基本类型值得传递如同基本类型变量的复制一样,而引用类型的传递,就如同引用变量的复制一样。(即使在对象内部修改参数值,但原始的引用还是不变)。

检测类型:

1.typyof 操作符确定一个变量是字符串、数值、布尔值、还是undefined的最佳工具。

2.instanceof 操作符可以判断一个对象是什么类的对象。

延长作用域链:

1.try-catch语句的catch块,会创建一个新的变量对象,其中包含的是被抛出的错误对象声明。

2.with语句,会将指定的对象添加到作用域链中。

function buildUrl(){
    var qs = "?debug=true";
    with(location){              //location对象中包含所有的属性和方法
        var url = href + qs;     //实际引用的是location.href
    }
    return url;                  //url是函数执行环境的一部分
}

没有块级作用域:

1.在js中,if语句中的变量声明会将变量添加到当前执行环境中。

1 if(true){
2     var color = "blue";
3 }
4
5 alert(color);        //"blue",一般在C/C++/Java中,color会在if语句执行完毕之后被销毁。
在编写JS代码时,如果不声明而直接初始化变量,会使其变成全局变量。

原文地址:https://www.cnblogs.com/annika/p/8684280.html

时间: 2024-11-08 20:05:24

JS高级程序设计学习笔记1的相关文章

JS高级程序设计学习笔记之第三章基本概念(语法,数据类型,流控制语句,函数)——查漏补缺

一.语法: 区分大小写 2.标识符:就是指变量.函数.属性的名字,或者函数的参数 a.标志符的规则:①第一个字符必须是一个字母.下划线(_)或一个美元符号($).                   ②其他字符可以是字母,下划线,美元符号或者数字. b.标志符采用驼峰大小写格式. c.严格模式:在顶部添加以下代码:"use strict"; d.语句:结尾加入分号.在控制语句中使用代码块为最佳实践. 二.关键字与保留字 三.变量:ECMAScript的变量是松散类型,可以保存任何类型的

JS高级程序设计学习笔记之JS事件(1)

事件流 冒泡 定义:事件开始时由最具体的元素接收,然后逐级上传到较为不具体的节点.(IE9.FF.Chrome.Safari会将事件一直冒泡到window对象.IE5.5及其以下会跳过<html>元素,直接从body跳到document).若发生事件的节点元素并没有绑定该事件,则这个动作会向上冒泡,直到被执行,一直冒泡到window对象. 阻止冒泡:①使用stoppropagation() ②在函数中进行一次判断,if(event.target==event.current.target){f

JS高级程序设计学习笔记之RegExp类型

创建正则表达式: 字面量形式定义正则表达式: Var expression = / pattern /flags ;pattern部分可以使任意简单或复杂的正则表达式.每个正则表达式可以带有一个或多个标志. 标志为:①g,表示全局模式.②i,表示不区分大小写.③m,表示多行模式 正则表达式的元字符包括:( [ { \ ^ $ | ? * + . } ] ).注意:模式中使用的所有元字符必须经过转义(使用 \ 符号). 使用RegExp构造函数: Var pattern = new RegExp(

JavaScript高级程序设计学习笔记--DOM

DOM(文档对象模型)是针对HTML和XML文档的一个API(应用程序接口). Document类型 文档的子节点 虽然DOM标准规定Document节点的子节点可以是DocumentType,Element,ProcessingInstruction或Comment,但还有两个内置的访问其子节点的快捷方式.第一个就是documnetElement属性,该属性始终指向HTML页面中的<html>元素.另一个就是通过childNodes列表访问文档元素,但通过documentElement属性则

JavaScript高级程序设计学习笔记--基本概念

1.语句 ECMAScript中的语句以一个分号结尾:如果省略分号,则由解析器确定语句的结尾,如下例所示: var sum=a+b //即使没有分号也是有效的语句--推荐 var diff=a-b; //有效的语句--推荐 虽然语句结尾的分号不是必需的,但我们建议任何时候都不要省略它.两个原因:1.加上分号可以避免很多错误 2.加上分号也会在某些情况下增进代码的性能,因为这样解析器就不必再花时间 推测应该在哪里插入分号了. 2.变量 var message="hi"; 像这样初始化变量

JavaScript高级程序设计学习笔记--错误处理与调试

try-catch语句 只要代码中包含finally子句,则无论try或catch语句块中包含什么代码--甚至return语句,都不会阻止finally子句的执行,来看下面这个函数: function testFinally(){ try{ return 2; }catch(error){ return 1; }finally{ return 0; } } 调用这个函数会返回0(PS:但我实际执行的时候会先返回0,再返回2) 抛出错误 与try-catch语句相配的还有一个throw操作符,用于

JavaScript高级程序设计学习笔记--面向对象程序设计

工厂模式 虽然Object构造函数或对象字面量都可以用来创建单个对象,但这些方式有个明显的缺点:使用同一个接口创建很多对象,会产生大量的重复代码.为解决这个问题,人们开始使用 工厂模式的一种变体. function createPerson(name,age,job){ var o=new Object(); o.name=name; o.age=age; o.job=job; o.sayName=function(){ alert(this.name); }; return o; } var

Javascript高级程序设计学习笔记

3. 基本概念 基本数据类型:Undefined,Null,Boolean,Number,String. 复杂数据类型:Object. 3.6 语句 switch比较值时用的是全等运算符 “===” ,因此不会进行类型转换.例如 “10” 不等于10. 3.7 函数 ECMAScript函数不介意传递进来多少个参数,也不在乎参数的类型.即使定义的函数只接受两个参数,在调用的时候也可以传递任意多个或者0个.因为ECMAScript的参数在内部是用一个数组表示的,在函数体内部可以通过argument

JavaScript高级程序设计学习笔记--高级技巧

惰性载入函数 因为浏览器之间行为的差异,多数JavaScript代码包含了大量的if语句,将执行引导到正确的代码中,看看下面来自上一章的createXHR()函数. function createXHR(){ if (typeof XMLHttpRequest != "undefined"){ return new XMLHttpRequest(); } else if (typeof ActiveXObject != "undefined"){ if (typeo