前端利器—1—转型JS编程
JS作为前端开发的必备语言工具,虽然JS对非编程人员来说比较容易上手,但是,要真正的精通JS开发,尚且假设学习过c++、java等面向对象语言的一种。因为对oo开发人员,迅速掌握JS的开发要点,是顺利而且容易的。
JS具备OO语言的一般性,但是,要特别注意JS是一门弱类型的语言,所有的变量定义都由var关键字,其类型的具体选择则根据赋值而定。其次,JS是一门解释型语言,这与c等不同,因此,JS语言需要运行在JS解释器之上。比如SpiderMonkey、Rhino,还有google浏览器下的V8引擎等。
作为Javascript编程人员初学着,也许有疑惑JS和Java到底是什么关系?其实,二者没有直接关系,JS是netscape推出的,而Java是sun推出的。两者唯一的关系就是名字比较相像而已。
JS作为一门语言,大量的应用于web开发,特别是web前端开发,即将JS嵌入到web中,就是常常说的客户端的JS。
作为oo编程人员到JS的转型联系,其编程环境非常简单,抛去复杂的而言,最简单的只要一个记事本就能在你的电脑上运行JS程序。为了工程化,本文编写和调试程序都在Dw和ie8环境中进行,除非特殊需要。
一.词法结构
JS和C语言一样是大小写敏感的,但是HTML是大小写不敏感的。良好的编程习惯是JS中的html标记和属性名都以小写字母形式书写。
JS语句结尾分号可选,但是良好的编程习惯是语句末尾加分号,并换行。
二.数据类型
1.数字:JS将所有的数字都表示成浮点类型,采用ieee 745定义的标准64位浮点数。
2.字符串:转义字符加\ 水平制表符\t 换行符 \n 等
字符串采用+进行拼接,另外字符串作为一个对象,其具有属性和操作,比如length属性,charAt(),substring(),indexOf()等操作。
数字转换成字符串:数字+字符串,String()函数,数字对象的toString()操作。
字符串转换成数字:字符串-0,Number()函数,parseInt()函数【截取字符串的整数部分】,parseFloat()函数。
3.函数:JS中的函数可视为一种数据类型,这和c等其他语言有点不同,所以函数可以作为参数传递给其他函数。
4.对象:对象是已命名的数据的集合,对象的属性通过点号来使用。对象通过构造函数来创建:var o = new Object();
特殊的,数组对象、Date对象、正则表达式RegExp对象等。
三.变量
JS的变量作用域特殊之处在于:没有块级作用域,在哪儿声明的都是全局有用的。而且在函数体内部,局部变量的优先级高于同名的全局变量。
好的编程习惯是将变量声明都放在函数开头。
1 var scope = "global";2 function checkscope()3 {4 var scope = "local";5 document.write(scope);6 }7 checkscope();
四.垃圾回收
JS采用自动的垃圾回收机制,编程人员不需要考虑释放内存。
五.JS的执行环境
JS解释器每次在执行一个函数时,都会为函数创建一个执行环境。JS允许有多个全局执行环境。客户端JS的每个独立的浏览器窗口或同一个窗口的不同帧都定义了独立的全局执行环境,每个帧都允许在自己的执行环境中,具有自己的全局对象,但是,这些对象具有与其他对象链接起来的属性。一个帧中的JS代码可以用parent.frames[0].x来引用第一个帧中的全局变量x。但是这样的操作使得复杂度就上升了,需要考虑安全性的问题。
六.运算符
JS的相等运算符 ==,相等的比较带有类型转换。
JS的等同运算符 ===
- NaN不会和任何值等同,包括他本身,如果判断一个值是否为NaN,采用isNan()函数。
- 判断引用的等同,必须是引用的是同一个对象、数组、函数,否则即使属性完全相同也不能等同。
- 如果两个值都是null或都是undefined,他们等同。
in运算符:左边是字符串,右边是对象名,判断是否是对象的属性之一。
delete运算符:删除对象的属性和元素,delete(o.x)
for...in语句:遍历对象里的属性。
1 var myobject = {x:1,y:"hello",z:4};2 for(var prop in myobject)3 {4 document.write("name:"+prop+";value:"+myobject[prop]+"<br>");5 }6 输出:7 lname:x;value:18 name:y;value:hello9 name:z;value:4
一个求阶乘的JS入门实例
1 <body> 2 <script type="text/javascript"> 3 var fact = 1; 4 for(var i = 1; i < 10;i ++) 5 { 6 fact = i * fact; 7 document.write(i+"!="+fact+"<br>"); 8 } 9 </script>10 </body>
结果:
1!=1
2!=2
3!=6
4!=24
5!=120
6!=720
7!=5040
8!=40320
9!=362880
JS的编程方法可以从c开发人员的经验中一步步引导过来,注意其特殊之处,相信,它将成为web开发的利器。
转载于:https://www.cnblogs.com/viviman/archive/2011/12/12/2285315.html
前端利器—1—转型JS编程相关推荐
- 前端利器CodePen和JSRUN了解一下
https://www.jianshu.com/p/a0aa7443ce77 https://www.v2ex.com/t/659859 前端利器CodePen和JSRUN了解一下 JSRUN 是一个 ...
- [知乎回答] 前端是否要学习 Node.js?
大家好,我是若川.最近组织了源码共读活动,感兴趣的可以加我微信 ruochuan12很多小伙伴都表示收获颇丰.一起学的大多数200行左右的Node.js源码.今天推荐这篇文章.(刚刚在写明天掘金要发的 ...
- 为前端工程之崛起而编程!
作者 | 蚂蚁保险体验技术团队 责编 | 胡巍巍 程序员转行学什么语言? https://edu.csdn.net/topic/ai30?utm_source=csdn_bw 本文经授权转载知乎&qu ...
- 前端清单之Vue.js篇
2019独角兽企业重金招聘Python工程师标准>>> 教程实践 基于 Vue 与 DeepStream 构建实时 CRUD 应用:Vue 是专注于 JavaScript UI 的渐 ...
- 2019年几大主流的前端框架(UI/JS)框架
如今的前端已经不再像以前一样就是简单的写写页面和调调样式而已,现在的前端越来越复杂,知识点越来越丰富. 要做WEB前端,就需要知道前端到底是什么,需要学习那些知识:前端至少要懂的三个部分:HTML,C ...
- 【面试利器】 原生JS灵魂拷问,你能答上多少(一)
前言 目前的前端世界,三大框架横行,原生JavaScript所用越来越少.但我认为JavaScript作为每一个前端工程师的立身之本,学再多遍都不为过. 因此我决定整理JavaScript中容易忽视或 ...
- 前端复习8:JS高级
前端复习8:JS高级 1.对象 1.1 面向过程与面向对象 1.2 对象与类 2 构造函数和原型 2.1 构造函数 2.2 构造原型prototype 2.2 对象原型 2.3 constructor ...
- 【repost】一探前端开发中的JS调试技巧
有请提示:文中涉及较多Gif演示动画,移动端请尽量在Wifi环境中阅读 前言:调试技巧,在任何一项技术研发中都可谓是必不可少的技能.掌握各种调试技巧,必定能在工作中起到事半功倍的效果.譬如,快速定位问 ...
- 关于vue.js 编程导航的使用:实现路由配置和跳转页面
本文主要讲述:通过vue.js 编程导航,实现路由配置和跳转页面的功能! 基础篇,仅作为简单演示. 总结 不能保证用户一定会点击某些按钮 并且当前操作,除了路由跳转以外,还会有一些别的附加操作(比如执 ...
最新文章
- bug诞生记——const_cast引发只读数据区域写违例
- 几款黄色LED的反相电流测量以及检测PCB制作要求
- asp语言与php语言的差别,用什么语言进行网页开发最好.php与asp语言的区别
- cad快捷命令大全_最全CAD快捷键命令大全(图文版、文字版、键盘版)
- max file descriptors_年轻族的战场!宋MAX强势对比嘉际
- 清北学堂2019.5.3
- 牛客网软件测试机考题库,为什么编程题本地测试通过,可是提交时却总报错。求大神们指点。...
- excel表头_「Excel技巧」关于Excel表格打印常见的四个问题,你会解决吗?
- 在64位的 CentOS 上只安装64位的软件包
- C语言malloc函数的用法
- pitfall when implementing multiple interfaces
- java操作word文档(文字,图片,表格添加以及替换操作)
- c语言字符类型中int表示什么,int表示什么数据类型
- 【spark】RDD数据源
- 数字信号处理(一)绪论
- Linux 系统中的vi和vim指令
- 三不足成紧箍咒,河姆渡能否取到智慧城市这本真经
- 手机h5 页面扫码上传图片 同步显示到pc端
- Django项目后端实现注册功能---短信验证码(容联云)。
- HDU——解题报告 1060
热门文章
- 基于phathomjs token 不定时无响应问题排查
- JMeter和JMeterPlugin的下载安装
- 266. Palindrome Permutation
- 在MAC上搭建eclipse+android开发环境以及eclipse的svn插件的安装
- 10474 - Where is the Marble?
- 普元EOS开发积累第一篇(常见错误解决方法) 持续更新
- Linux 与win双系统时间不统一的解决方法
- Python解决八皇后问题
- 一劳永逸解决IDEA 2019.3连接MySQL80时区(serverTimezone)问题
- 如何使用多个参数调用Angular.js过滤器?