javascript进阶课程--第一章--函数

javascript进阶课程--第一章--函数

 

 

学习要点

  • 了解内存管理
  • 掌握全局函数的使用

 

 

知识点

基本类型和引用类型

  1. 基本类型值有:undefined,NUll,Boolean,Number和String

    这些类型分别在内存中占有固定的大小空间,例如:数值型在内存中占有八个字节,布尔值只占有一个字节......
    他们的值保存在栈空间,咱们经过按值来访问的。javascript

  2. 引用类型:对象、数组、函数

    引用类型内存中占有的空间不固定,可是内存地址大小是固定的,所以存储的其实是数据的内存地址html

  3. 在变量复制时候,基本类型复制的是值自己,而引用类型复制的是地址.

    基本类型复制
    java

    引用类型复制
    web

  4. 函数的参数都是按值传递的

执行环境及做用域

  • 执行环境定义了变量或函数有权访问其余数据。
  • 全局执行环境是最外围的执行环境,在web浏览器中,全局执行环境是window对象,所以,全部的全局变量的函数都是做为window的属性和方法建立的。
  • 变量没有在函数内声明或者声明的时候没有带var就是全局变量,拥有全局做用域,window对象的全部属性拥有全局做用域;在代码任何地方均可以访问,函数内部声明而且以var修饰的变量就是局部变量,只能在函数体内使用,函数的参数虽然没有使用var但仍然是局部变量。
  • 内部环境能够访问全部的外部环境,可是外部环境不能访问内部环境中的任何变量和函数。
  • 在变量的查询中,访问局部变量要比全局变量快

内存管理

JS中内存的分配和回收都是自动完成,内存在不使用的时候会被垃圾回收器自动回收。 算法

若是程序简单,内存管理不会对你形成太多困扰。可是复杂的程序内存管理是很重要的。这节课咱们的学习任务是了解内存管理概念,以及一些注意事项,更深刻的内容,随着学习的深刻逐步理解。 数组

  1. 内存的生命周期,JS环境中分配的内存通常有以下生命周期:
    1. 内存分配:当咱们申明变量、函数、对象的时候,系统会自动为他们分配内存
    2. 内存使用:即读写内存,也就是使用变量、函数等
    3. 内存回收:使用完毕,由垃圾回收自动回收再也不使用的内存
  2. 垃圾回收算法:对垃圾回收算法来讲,核心思想就是如何判断内存已经再也不使用了。(了解)
  3. JavaScript 的内存管理注意事项
    1. 避免没必要要的定义全局变量

      当一个变量被定义在全局做用域中,默认状况下JavaScript 引擎就不会将其回收销毁。如此该变量就会一直存在于老生代堆内存中,直到页面被关闭。 浏览器

    2. 及时解除再也不使用的变量引用,即将其赋值为 null;

      在内存回收周期中,收回内存不是当即收回,浏览器每隔一段时间检查一次. 函数

    3. 合理的使用函数,函数中的局部变量函数执行结束后就会自动释放内存
  4. ......更多内存管理的技巧会放在案例中演示,这里暂作了解。

全局函数

全局函数和属性可用于全部内建的 JavaScript 对象。全局函数又叫顶层函数系统函数学习

  1. parseInt() 函数可解析一个字符串,并返回一个整数
  2. parseFloat() 函数可解析一个字符串,并返回一个浮点数
  3. isNaN() 函数用于检查其参数是不是非数字值
  4. String() 函数把对象的值转换为字符串
  5. Number() 把对象的值转换为数字
  6. eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码

    该方法只接受字符串做为参数,要计算的字符串中必须含有要计算的 JavaScript 表达式或要执行的语句。 编码

  7. escape() 对字符串进行编码
    • 返回值:已编码的 string 的副本。其中某些字符被替换成了十六进制的转义序列。
    • 该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ - _ + . / 。其余全部的字符都会被转义序列替换。
  8. unescape() 对由 escape() 编码的字符串进行解码
  9. encodeURI() 把字符串编码为 URI。

    URI :Uniform Resource Identifier,统一资源标识符;

  10. decodeURI() 解码某个编码的 URI。
  11. decodeURIComponent() 解码一个编码的 URI 组件。
  12. encodeURIComponent() 把字符串编码为 URI 组件。
  13. 三种编码方式的区别
    1. escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z

      主要是为了防止特殊字符形成计算错误时候应用

    2. encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z

      防止特殊字符串形成URI的传递错误,通常用于页面跳转的时候。

    3. encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z

      防止URI参数中特殊字符串形成参数读取错误,通常用来传递参数。

  14. isFinite() 检查某个值是否为无穷大的数。

    若是 number 是有限数字(或可转换为有限数字),那么返回 true。不然,若是 number 是 NaN(非数字),或者是正、负无穷大的数,则返回 false。

    • Infinity无穷大(系统定义常量)
    • -Infinity无穷小(系统定义常量)

 

代码

 1 <!DOCTYPE html>
 2 <html lang="zh-cn">
 3 <head>
 4     <meta charset="utf-8">
 5     <title>课堂演示</title>
 6 </head>
 7 <body>
 8 <script>
 9  // 为变量分配内存
10     var m= 123;
11     var n = "JavaScript";
12  // 为对象分配内存
13 //     var person = {
14 //         age: 25,
15 //         name: '张三'
16 //     };
17 
18 // // 为函数分配内存
19 //     function sum(m, n) {
20 //         return m+n;
21 //     }
22 
23 // var str="x=10;y=20;alert(x*y)";
24 //  alert(str)
25 // eval(str)
26 
27 var str='javascript进阶应用教程';
28 var str1=escape(str); 29 var str2=unescape(str1) 30 document.write(str+ "<br />")
31 document.write('str编码后:'+str1+ "<br />")
32 document.write('str1解码后:'+str2+ "<br />")
33 </script>
34 </body>
35 </html>
相关文章
相关标签/搜索