Java笔记--Web前端知识汇总之三 JavaScript
2016-09-02 23:51
555 查看
JavaScript
一.JavaScript概述
1.JS简介
JS是一门基于对象和事件驱动的脚本语言, 主要应用在客户端
二.JS的语法
1.JS的注释
单行注释: //注释内容
多行注释: /* 注释内容 */
一.JavaScript概述
1.JS简介
JS是一门基于对象和事件驱动的脚本语言, 主要应用在客户端
基于对象 事件驱动 脚本语言 JS的特点: 解释运行,没有编译过程 基于对象 弱类型 JS的优点: 交互性 安全性 跨平台性 2.在html中引入js (1) 直接在html中书写js代码 在<head>标签下的<script type="text/javascript">/script>标签的内部 可以书写js代码 (2) 通过引入的方式引入js 在<head>标签下的<script type="text/javascript" src="demo1.js"></script>标签来引入外部的js文件 注意: <script>标签不能自闭, 否则会引入失败!!!
二.JS的语法
1.JS的注释
单行注释: //注释内容
多行注释: /* 注释内容 */
2.数据类型 (1) 基本数据类型 数值类型(number) 字符串类型(string) 布尔类型(boolean) undefined null (a)数值类型 -- number 在js中 所有的数值在底层都是浮点型, 但是在处理和显示的时候, js会自动的在整型和浮点型之间进行转换 1, 3, 5, 100, ..... Infinity 正无穷大 -Infinity 负无穷大 NaN (not a number) 非数字 NaN和任何数值都不相等 包括它本身 NaN和任何数值做运算结果都是NaN. 如果想要判断一个数值是否是非数字 不能通过xx == NaN 去判断 可以通过一个方法 isNaN(xx) 来判断 在js中, 数值类型是一个基本数据类型, 但是在js中也为数值类型提供了对应的包装对象 -- Number, 并提供了一些重要的属性和方法 Number提供的属性: Number.MAX_VALUE 可表示的最大数字 Number.MIN_VALUE 可表示的最小数字 Number.NaN 非数字值 Number.POSITIVE_INFINITY 正无穷大 Number.NEGATIVE_INFINITY 负无穷大 (2) 字符串类型 -- string 在js中, 字符串也是基本数据类型, 字符串常量必须用单引号或者是双引号引起来. 在js中也为字符串类型提供了对应的包装对象 -- String, 并提供了一些重要的属性和方法 length -- 字符串的长度 (3) boolean 在js中也为布尔类型提供过来对应的包装对象 -- Boolean, 并提供了一些重要的属性和方法 (4) undefined undefined的类型的值只有一个,就是undefined, 表示变量未定义, 如果定义了一个变量但是没有为其初始化值, 那么该变量就是一个undefined (5) null null类型的值只有一个, 就null, 表示空值 作为函数的返回值, 4000 表示函数返回的是一个空的对象 (2) 复杂数据类型 对象 -- (普通对象 数组 函数) **js中数据类型的转换
在js中数据类型在需要时会自动的进行类型的转换, 转换的规则如下: 数值类型: 转字符串, 直接转成对应值的字符串 转布尔, 0 和 NaN转成false, 其他值转成true 在需要时会自动的转成对应值的包装对象 字符串: 空字符串(""): 转数字为 0, 转布尔为 false 非空纯数字字符串("123"): 转数字为对应值的数值, 转布尔 true 非空非数字字符串("abc"): 转数字为NaN, 转布尔是true 在需要时会自动的转成对应值的包装对象 布尔类型: true: 转数字为 1, 转字符串为"true" false: 转数字为 0, 转字符串为"false" 在需要时会自动的转成对应值的包装对象 undefined: 转数字为 NaN, 转字符串为"undefined", 转布尔值为false, 转对象会抛出异常. null 转数字为 0, 转字符串为"null", 转布尔值为false, 转对象会抛出异常. 3.变量的定义 在js中有数据类型, 但是变量是不区分数据类型的 所以称js一门弱类型的语言 通过var关键字类定义变量, 变量不区分类型, 可以指向任意类型的值 4.运算符 js中的运算符和java中的运算符大致相同 typeof -- 判断变量或表达式的数据类型 delete -- 删除数组中的元素 或者是 对象中的属性和方法 ----------------------js中的运算符---------------------- js中运算符和Java中运算符大致相同 算术运算符: +,-,*,/,%,++,-- 赋值运算符: =,+=,-+,*=,/=,%= 比较运算符: ==,!=,===,!==,>,>=,<,<= 位运算符: & , | 逻辑运算符: && ,|| 前置逻辑运算符: ! (not) 三元运算符: ? : 其他运算符: typeOf, delete js中比较运算符中的 ==(或!=) 和 ===(或!==)的区别: (1)== 是相等运算符, 比较两个值是否相等,如果比较的两个值是同一类型, 直接进行比较; 如果比较的两个值不是同一类型, 会自动转换成同一类型再比较是否相等 (2)=== 是严格相等运算符, 比较的两个值必须是同一类型, 否则直接返回false. 例如: 1 == "1" //true 先转换成同一类型再比较是否相等 1 == true //true 先转换成同一类型再比较是否相等 1 == (4-3) //true 1 === "1" //false 不是同一类型, 直接返回false 1 === "true" //false 不是同一类型, 直接返回false 1 === (4-3) //true 同一类型,并且值相等 typeOf运算符 typeOf是一个一元运算符, 放在一个运算数之前, 这个运算数可以是任意类型的. 它的返回值是一个字符串, 表示这个运算数的类型, 如: var a = 100; typeOf a; //"number" (还包括任意数值和NaN) var b = "abc"; typeOf b; //"string" (包括任意字符串) var c = true; typeOf c; //"boolean" var d = undefined; typeOf d; //"undefined" var d = null; typeOf d; //"object" typeOf后面可以跟上圆括号, 在求一个表达式的类型时,可以用圆括号括起来, 例如: typeOf(1+"100"); 这让typeOf看起来像一个函数, 注意它是一个运算符, 不是函数! 附: typeof null // "object" 上面代码表示,查询null的类型,返回结果是object(对象)。 这并不是说null的数据类型就是对象,而是JavaScript早期部署中的一个约定俗成,其实不完全正确, 后来再想改已经太晚了,会破坏现存代码,所以一直保留至今. delete运算符 delete是一个一元运算符, 它用来删除对象属性或者数组的元素. 返回值是布尔值, 表示是否删除成功. 如: var a = [1,2,3]; //定义一个数组 delete a[2]; //删除最后一个元素 alert(a[3]); // 最后一个元素在数组中已经不存在了 a.length; // => 3 注意, 数组的长度并没有改变, 尽管元素已经删除, 但是删除操作留下了一个"洞", 并没有影响数组的长度, 因此数组长度仍然是3 5.语句 js中的语句和java中的大致相同 (1)if判断语句 判断条件可以不是布尔类型, 会自动进行类型的转换 (2)switch选择语句 变量的类型可以是字符串 (3)循环语句 while循环 do...while循环 for循环 for...in 6.函数 -- 就是一组整合在一起的具有功能的代码块 可以反复调用 (1) 通过function关键字来定义函数 function 函数名(形参列表){ 函数体 ... } 函数名(实参列表); function fn1(name, addr){ alert(name+"~"+addr); } (2) 通过函数表达式来定义函数 var fn = function(形参列表){ 函数体 ... } 函数名(实参列表); var fn8 = function (name,nickname){ alert(name+"~~"+nickname); } (3) 通过Function构造函数定义函数 var fn = new Function("参数1", "参数2",...., "函数体"); 函数名(实参列表); var fn9 = new Function("name", "age", "alert(name+'~~'+age)"); fn9("孙权", "35"); **JS中的参数问题: 在js中, 不传参数也可以调用函数 实参个数可以小于 等于 大于形参个数 当实参个数大于形参个数时, 多出来的参数 可以通过 arguments(所有实参组成的数组)数组来获取 注意: 该变量只能在函数内部使用 由于不传参数也可以调用函数, 但是可能会引发一些错误或者是一些意外的操作, 可以通过设置默认值或者判断 来避免这种情况!! **JS中的函数可以赋值给其他的引用, 也可以作为参数传给其他的函数, 甚至可以作为函数的返回值 JS中的函数也是对象的一种 之所以具有这样的特性, 是因为js是一门解释执行的脚本语言, 没有编译的过程, 直接执行的就是源代码. 而js中的函数就是一组具有功能的代码块, 本质上就是一段字符串, 函数的执行其实就是这段字符串在执行!!! 7.数组 -- 用[]括起来的并用逗号分隔的一组内容, 本质上也是一段字符串 (1) 通过Array构造函数来创建数组 var arr = new Array(); //创建一个空数组 var arr = new Array(10); //创建一个指定长度的数组 var arr = new Array(10, "abc", true); //创建一个指定初始值的数组 (2) 通过数组直接量来创建数组 var arr = []; //创建一个空数组 var arr = [10, "abc", true]; //创建一个指定初始值的数组 **js中的数组的长度是可以被任意改变的 如果数组中某一个位置没有元素, 该处的值就是undefined **js中的数组包含的元素可以是任意的类型 **在js中可以通过改变数组的长度来删除元素, 甚至可以清空数组 8.对象 (1) js中的内置对象 String对象 Array对象 Date对象 Math对象 Global对象 RegExp对象 (2) 自定义对象 方式一: function Person(){} var p = new Person(); p.name = "张三"; p.age = 23; p.run = function(){ alert(this.name+"~"+this.age+"~running~~~"); } 方式二: function Person(name, addr){ this.name = name; this.addr = addr; this.run = function(){ alert(this.name+"~"+this.addr+"~~running~~~"); } } var p = new Person("李四", "北京"); 方式三: var p = { name: "王五", nickname: "五五", run: function(){ alert(this.name+"~"+this.nickname+"~~running~~~"); } } **可以为对象动态的添加属性或方法 (3) 对象的操作 **可以为对象动态的添加(或删除)属性或方法 //delete -- 删除数组中的元素或对象上的属性或方法 var p = { name: "王五", nickname: "五五", run: function(){ alert(this.name+"~"+this.nickname+"~~running~~~"); } } alert(p.name); delete p.name; alert(p.name); **对象属性或方法的其他访问方式 p.name <==> p["name"] **with语句 **for...in语句
相关文章推荐
- 鼠标移动生出四散图形的效果
- 【转载】跟着9张思维导图学习JavaScript
- WEB前端-JavaScript-入门手记
- JS高级特性(一)
- js小技巧
- js实现提交前对列表数据的增删改查
- js五种数据类型,以及相关的基础方法
- JavaScript强化教程——数组的基本处理函数
- Chrome 中的 JavaScript 断点设置和调试技巧
- 使用 Chrome 开发者工具进行 JavaScript 问题定位与调试
- JS中的基本概念易忘点
- JS中超越现实的匿名函数
- JS常见对象方法小结
- JavaScript: missing ) after argument list,js获取s:property值的问题
- js&&省市级联列表&&分别用数组和JSON实现
- knockoutjs如何动态加载外部的file作为component中的template数据源
- 【jsp/servlet】jsp数据交互(一)
- JavaScript基础
- 关于createjs的中心点和坐标之间的联系
- js算法--判断最大值,排序,倒序输出。