# zb_web0903 **Repository Path**: Fsj0803/zb_web0903 ## Basic Information - **Project Name**: zb_web0903 - **Description**: js语言 - **Primary Language**: JavaScript - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2018-09-04 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # zb_web0903 # 课堂笔记 *JavaScript语言* ## 1 js语言概述 * 1.1 js语言分类 根据书写的位置类似于css也分为三种: (1) 外部js 写在外部独立以.js结尾的文件中;js使用script标签的src属性将外部js引入当前页面; (2) 内部js 写在head部分的script标签中; 注意,有时为了加快页面的浏览时的加载速度,会把script标签写在html页面的末尾; (3) 内联js 写在html标签空间的事件属性中; 执行的优先级: 按照就近原则[范围最小优先原则]进行判定; 内联js>内部js>外部js js语言的注释方式和java一样; js语言也是大小写敏感的语言; ## 2 js基础语法 * 2.1 js基础语法知识点 (1) == 和 === 使用 == 判定内容是否相等;等价于java的equals; === 判定地址引用是否相同[不进行类型转换,进行等值判定];等价于java的 == ; (2) switch-case的数据类型 switch语句中使用任何数据类型(在很多其他语言中只能使用数值), 无论是字符串,还是对象都没有问题,其次,每个case的值不一定是常量,可以使变量,甚至是表达式。 switch语句在比较值时使用的是全等操作符,因此不会发生类型转换(例如,字符串“10”不等于数值10) (3) js常用的数据类型 js常用的数据类型有:字符串(string)、数值类型(number)、布尔类型(boolean)、数组、对象(object)、 null(空)、undefined(未定义)、nan(不是数值); js中的数据类型根据书写方式和格式由解析器进行匹配; js中的类型会尽可能进行匹配,会存在类型的默认转换; null(空):没有,没有出现、没有定义; 以下情况会出现null取值: [1] 手动设置变量的值或者对象某一个属性值为null(此时不赋值,会在后面的代码中进行赋值,相当于初始化。) [2] 在JS的DOM元素获取中,如果没有获取到指定的元素对象,结果一般是null。 [3] Object.prototype._proto_的值也是null。 [4] 在正则捕获的时候,如果没有捕获到结果,默认也是null。 undefined(没有定义):对象或变量存在,但是没有进行初始化时,取值为undefined; 以下情况会出现undefined取值: [1] 在变量提升(预解析)阶段,只声明未定义,默认值就是undefined。 [2] 在JS的严格模式下(”use strict”),没有明确的主体,this指的就是undefined。 [3] 函数定义没有返回值(return或者return后面什么也不带),默认的返回值就是undefined【java的返回值为void类型】。 [4] 函数定义形参不传值,默认就是undefined。 [5] 对象没有这个属性名,属性值默认就是undefined。 [6] 在数组的find方法中,没有找到的情况下是undefined。 null和undefined用法总结: [1] typeof 返回的是字符串,有六种可能:”number”、”string”、”boolean”、”object”、”function”、”undefined”; [2] JavaScript的最初版本是这样区分的: null是一个表示"无"的对象,转为数值时为0; undefined是一个表示"无"的原始值,转为数值时为NaN。 [3] undefined:不是js关键字,而是window对象的全局属性,(可以用window.undefined来访问该属性), typeof(undefined)返回undefined,当在js中使用未声明的变量,或声明变量但未给其赋值时,其值为undefined, 在primitive类型context下使用时 :number-->NaN,string-->"undefined",bool-->false [4] null==undefined 返回true, 但null===undefined 返回false,因为typeof()不一样。 [5] 在算数运算表达式中,null值会转为0进行使用;undefined会转为NaN进行使用; (4) js中的全局的属性和函数 全局属性: undefined:未定义 NaN:不是一个数值类型; Infinity:无穷大; 全局函数: decodeURI() 解码某个编码的 URI。 decodeURIComponent() 解码一个编码的 URI 组件。 encodeURI() 把字符串编码为 URI。 encodeURIComponent() 把字符串编码为 URI 组件。 escape() 对字符串进行编码。 eval() 计算 JavaScript 字符串,并把它作为脚本代码来执行。 isFinite() 检查某个值是否为有穷大的数。 isNaN() 检查某个值是否是数字。 Number() 把对象的值转换为数字。 parseFloat() 解析一个字符串并返回一个浮点数。 parseInt() 解析一个字符串并返回一个整数。 String() 把对象的值转换为字符串。 unescape() 对由 escape() 编码的字符串进行解码。 全局属性或全局函数属于widow对象,使用时可以直接引用即可,也可以通过window对象引出; * 2.2 js函数 js中的函数和java中的概念相同,也有形参、实参、以及使用return进行值的返回; 语法: function 函数名(形参列表){ 函数体[return语句] } 语法2: var 函数名 = function(形参列表){ 函数体[return语句] } 语法3: var 函数名 = new Function(形参列表){ 函数体[return语句] } 注意: (1) 函数声明时,不需要指定返回值类型,返回值类型由return语句决定;return是可选部分; (2) 如果没有使用return返回或者return后面没有表达式,则返回值为undefined; (3) 形参如果没有对应的实参进行传值,则形参的值为undefined; (4) 形参列表直接写变量名列表即可,例如:val1,val2;不需要使用var类似java的声明; * 2.2 js内置对象 (1) Number对象 表示所有的数值类型,经常使用 isNaN进行判定; (2) String类型 表示所有的字符串类型,可以使用 '' 或 "" 引出; (3) Date/Array类型 数组的声明方式: var obj1 = new Array(size); var obj2 = new Array(元素列表); var obj3 = [元素列表]; 注意:这些内置对象可以使用new创建,也可以直接调用[按函数调用的方式理解] #### 参与贡献 1. Fork 本项目 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 码云特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)