JavaScript基础知识(变量/引用/转换/函数)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JavaScript基础知识(变量/引用/转换/函数),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含7212字,纯文字阅读大概需要11分钟。
内容图文
————————————————————————————————————————————
变量
- 全局变量:在函数体外声明,全局可以使用
- 局部变量:通过关键字var来声明
变量类型
1 <script type="text/javascript"> 2var a; 3// 十进制 4 a = 1; 5 a = 1.2; 6 a = -23; 7 a = .23e4; 8 a = 3e-2; 9// 十六进制10 a = 0xABCDE; 11 a = 0Xff; 12// 八进制13 a = 0123; 14 a = 01234567; 15// 正负无穷大16 a = 1.79e310; 17 a = -1.79e310; 18// NaN:不是一个数字19// p.s.NaN不能和自身比较,NaN!=NaN20 a = 0 / 0; 21// alert(a);22// alert(isNaN(a));23var str1 = "hello"; 24var str2 = "world"; 25var str = str1 + str2; 26// 转义字符,如果定界符用‘,内部是可以用"的 27var strCh = ‘a\nb\rc\t"d\\‘; 28// alert(strCh);29// 赋不存在的值30var emptyValue; 31// alert(emptyValue);32// 赋空置33var nullValue = null; 34 alert(nullValue); 35 </script>
在内存中的存储与释放(无用存储单元)
- 收集方式:自动进行收集,可以创建任何需要的无用对象,系统会自动进行清除
- 收集内容:收集器确定安全回收内存单元的时机,回收那些不再会被使用的值
- 回收算法:标记和清除无用存储单元的回收算法,通过回收器周期性遍历所有变量并且给变量所引用的值做标记,如果被引用的值是对象或数组,那么会以递归的形式做标记,如果值是数或图,回收器会找到对应的值。如果没有找到对应的值,则通过回收算法来回收。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
引用JS
1 <!DOCTYPE html> 2 <html> 3 4 <head> 5 <!-- 调用外部文件 --> 6 <script type="text/javascript" src="./test.js"></script> 7 <!-- 使用代码屏蔽 --> 8 <script type="text/javascript"> 9 <!-- 10 alert("浏览器支持js,如果不支持则不显示该内容"); 11// 向控制台书写内容12 console.log("hello"); 13//-->14 </script> 15 <!-- 在浏览器不支持js时显示该行字 --> 16 <noscript> 17 您的浏览器不支持js,建议更换高版本的浏览器以保证您的用户体验 18 </noscript> 19 </head> 2021 <body> 22 <!-- 写在href中的js --> 23 <p><a href="javascript:confirm(‘您确定么?‘)">报名</a></p> 24 <!-- 写在onclick中的js --> 25 <p onclick="javascript:alert(‘onclick‘)">点击</p> 26 </body> 2728 </html>
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
隐式转换
显式转换
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
参数调用的arguments的方法
1 <script type="text/javascript"> 2// arguments数据类型是一个数组,可以得到我们传入的参数 3function calc(x, y) { 4 alert(arguments[0]); 5 alert(arguments[1]); 6 alert(typeof arguments); 7 } 8// alert(1, 2); 910// 通过arguments.length获取参数的个数11// 在这里调用的实参有5个,函数形参有4个,自动忽略一个,但arguments.lenth为512// 通过arguments实现可变参数13function test(a, b, c, d) { 14 arguments[2] = 100; 15var paramsNum = arguments.length; 16var sum = 0; 17for (var i = arguments.length - 1; i >= 0; i--) { 18 sum += arguments[i]; 19 } 20 alert(sum); 21 } 22 test(1, 2, 3, 4, 5, 6); 23 </script>
————————————————————————————————————————————
函数
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
全局函数:见手册
- 代码样例
1 <script type="text/javascript"> 2/*********************************** 3 * encodeURI() 4 * decodeURI() 5 * encodeURIComponent() 6 * decodeURIComponent() 7 ***********************************/ 8// encodeURIComponent 在转义时会将整个URI中的所有标点符号都转义,包括分隔符/ 9var str = "http://www.hughdong.com/Hugh Dong,/"; 10 document.write(encodeURI(str) + "</br>"); 11 document.write(encodeURIComponent(str) + "</br>"); 12// decodeURI 无法完全解开encodeURIComponent的编码,需要对应decodeURIComponent来就解码13 document.write(decodeURI(encodeURIComponent(str)) + "</br>"); 14 document.write(decodeURIComponent(encodeURIComponent(str)) + "</br>"); 15 document.write("<hr>") 16/*********************************** 17 * escape() 18 * unescape() 19 ***********************************/20// 对字符进行转义21 str = "(?!=()#%&))"; 22 document.write(escape(str) + "</br>"); 23 document.write(unescape(escape(str)) + "</br>"); 24 document.write("<hr>") 25/*********************************** 26 * eval() 27 ***********************************/28// 计算某个字符串,并执行其中的JavaScript代码29 eval("document.write(‘eval() is called‘)"); 30 document.write("<hr>") 31/*********************************** 32 * getClass(javaobj) 33 * 未理解,略 34 ***********************************/35 document.write("<hr>") 36/*********************************** 37 * isFinite() 38 * isNan() 39 ***********************************/40// isFinite 判断不是无穷大时true41 document.write(isFinite(1.79e390) + "</br>") 42 document.write(isFinite(-1.79e390) + "</br>") 43 document.write(isFinite(2) + "</br>") 44// isNaN 判断不是数字时true45 document.write(isNaN("hello") + "</br>") 46 document.write(isNaN(1.79e390) + "</br>") 47 document.write("<hr>") 48/*********************************** 49 * Number() 50 * parseFloat() 51 * parseInt() 52 * String 53 * 数据类型转换,略 54 ***********************************/55 document.write("<hr>") 56 </script>
-
实现效果
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
匿名函数:没有函数名的函数
- 函数表达式可以存储在变量中,变量也可以作为一个函数使用
- 可以将匿名函数作为参数传递给其他函数,接收方函数就可以通过所传递进来的函数完成某些功能
- 可以通过匿名函数来执行某些一次性的任务
回调函数:将函数的返回值作为参数调用来实现功能
-
回调函数调用的函数
- call()
- apply()
- 可以让我们在不做命名的情况下传递参数,这样可以节省全局变量
- 我们可以讲一个函数调用操作委托给另一个函数,节省代码编写
- 有助于提升性能
自调函数:不需要调用,自动执行的函数
- 使用自调函数不会产生任何全局变量
- 函数无法重复执行,适合执行一些一次性或初始化的任务
内部(私有)函数
- 确保全局名字空间的纯净性,防止命名出现冲突
- 只将一些必要的函数暴露给外部,并保留属于自己的函数,使其不被其他应用程序所调用
返回函数的函数
闭包(作用域链)
实现代码:
1 <script type="text/javascript"> 2var Test = function Calc(a, b) { 3return a + b; 4 } 5 document.write(Test(1, 2) + "</br>"); 6var Test1 = Test; 7 document.write(Test1(1, 2) + "</br>"); 8/******************************* 9 * 匿名函数,没有函数名 10 *******************************/11var Test2 = function(x, y) { 12return x * y; 13 } 14var Test3 = Test2; 15 document.write(Test2(3, 4) + "</br>"); 16 document.write(Test3(4, 5) + "</br>"); 17/******************************* 18 * 回调函数(匿名函数的应用) 19 *******************************/20// Demo121// 通过Calc2调用T1和T2函数22function Calc2(x, y) { 23return x() + y(); 24 } 25function T1() { 26return 5; 27 } 28function T2() { 29return 6; 30 } 31 document.write(Calc2(T1, T2) + "</br>"); 32// Demo233// 调用Func1,在for循环中将abc的值先*2传入CallBack函数AddOne,将返回值存入arr数组并打印34function Func1(a, b, c, CallBack) { 35var i, arr = []; 36for (i = 0; i < 3; i++) { 37 arr[i] = CallBack(arguments[i] * 2); 38 } 39return arr; 40 } 41function AddOne(num) { 42return num + 1; 43 } 44 document.write(Func1(3, 4, 5, AddOne) + "</br>"); 45// Demo346// 或者使用匿名函数作为回调函数,同Demo247function Func2(a, b, c, CallBack) { 48var i, arr = []; 49for (i = 0; i < 3; i++) { 50 arr[i] = CallBack(arguments[i] * 2); 51 } 52return arr; 53 } 54 document.write(Func2(5, 6, 7, function(a) { return a + 1 }) + "</br>"); 55// Demo456// 使用系统的call()方法57function Func4(a, b, c) { 58return a * b * c; 59 } 60 document.write(Func4.call(this, 2, 2, 2) + "</br>"); 61// Demo562// apply()方法63function Func5(a, b, c) { 64return a + b + c; 65 } 66var params = [4, 5, 9] 67 document.write(Func5.apply(this, params) + "</br>"); 68/******************************* 69 * 自调函数 70 *******************************/71 (function(a, b) { 72 document.write("函数自调用" + a + b); 73 })(3, 5); 74 </script>
原文:http://www.cnblogs.com/hughdong/p/7183740.html
内容总结
以上是互联网集市为您收集整理的JavaScript基础知识(变量/引用/转换/函数)全部内容,希望文章能够帮你解决JavaScript基础知识(变量/引用/转换/函数)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。