吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 2591|回复: 8

[其他] javascript学习笔记(一)基础知识

[复制链接]
头像被屏蔽
邪恶小志 发表于 2014-10-12 04:41 | 显示全部楼层 |阅读模式

本文是学习笔记系列的第一篇,介绍些基础知识,包括js基本概念、 JScript 的变量、js的数据类型、3.JScript 的运算符、js流程控制、js函数。有需要的朋友可以参考下

基本概念
     javascript是一门解释型的语言,浏览器充当解释器。
     js执行引擎并不是一行一行的执行,而是一段一段的分析执行。

延时脚本
HTML4.0.1中定义了defer属性,它的用途是表明脚本在执行时不会影响页面的构造。也就是说,脚本会延迟到整个页面都解析完毕后再执行。因此,在<script>元素中设置defer属性,相当于告诉浏览器立即下载,但延迟执行。在XHTML文档中,要把defer属性设置为defer=“defer"

区分大小写
ECMASCript中的一切(包括变量,函数名和操作符)都区分大小写。

1.jscript的变量
变量在第一次用到时就设置于内存中,便于后来在脚本中引用。使用变量之前先进行声明。可以使用 var 关键字来进行变量声明。
var count, amount, level; // 用单个 var 关键字声明的多个声明。


变量命名
变量名包括全局变量,局部变量,类变量,函数参数等等,他们都属于这一类。
变量命名都以类型前缀+有意义的单词组成,用驼峰式命名法增加变量和函式的可读性。例如:sUserName,nCount。
前缀规范:
每个局部变量都需要有一个类型前缀,按照类型可以分为:
  1. <FONT style="BACKGROUND-COLOR: white" size=2>s:表示字符串。例如:sName,sHtml;
  2. n:表示数字。例如:nPage,nTotal;
  3. b:表示逻辑。例如:bChecked,bHasLogin;
  4. a:表示数组。例如:aList,aGroup;
  5. r:表示正则表达式。例如:rDomain,rEmail;
  6. f:表示函数。例如:fGetHtml,fInit;
  7. o:表示以上未涉及到的其他对象,例如:oButton,oDate;
  8. g:表示全局变量,例如:gUserName,gLoginTime;</FONT>
复制代码
JScript 是一种区分大小写的语言。创建合法的变量名称应遵循如下规则:
注意第一个字符不能是数字。
后面可以跟任意字母或数字以及下划线,但不能是空格
变量名称一定不能是 保留字。
javascript是一种弱类型语言,JavaScript 会忽略多余的空格。您可以向脚本添加空格,来提高其可读性。
var是javascript的保留字,表明接下来是变量说明,变量名是用户自定义的标识符,变量之间用逗号分开。
如果声明了一个变量但没有对其赋值,该变量存在,其值为Jscript 值 undefined。
强制类型转换
在 Jscript 中,可以对不同类型的值执行运算,不必担心 JScript 解释器产生异常。相反,JScript 解释器自动将数据类型之一改变(强制转换)为另一种数据类型,然后执行运算。例如:
  1. <FONT style="BACKGROUND-COLOR: white">运算 结果

  2. 数值与字符串相加 将数值强制转换为字符串。
  3. 布尔值与字符串相加 将布尔值强制转换为字符串。
  4. 数值与布尔值相加 将布尔值强制转换为数值。</FONT>
复制代码
要想显式地将字符串转换为整数,使用 parseInt 方法。要想显式地将字符串转换为数字,使用 parseFloat 方法。
JavaScript 变量的生存期:当您在函数内声明了一个变量后,就只能在该函数中访问该变量。当退出该函数后,这个变量会被撤销。这种变量称为本地变量。您可以在不同的函数中使用名称相同的本地变量,这是因为只有声明过变量的函数能够识别其中的每个变量。
如果您在函数之外声明了一个变量,则页面上的所有函数都可以访问该变量。这些变量的生存期从声明它们之后开始,在页面关闭时结束。

js变量思维导图
(, 下载次数: 74)
这是我从学校电脑保存下来的

2.js的数据类型
jscript 有三种->主要数据类型、两种->复合数据类型和两种->特殊数据类型。
主要(基本)数据类型
字符串数值布尔复合(引用)数据类型
对象数组特殊数据类型
Null`Undefined`字符串数据类型:字符串数据类型用来表示 JScript 中的文本。在js中,虽然双引号("")和单引号('')均可表示字符串,而且它们几乎没有任何区别。但只使用双引号("")来表示字符串被认为是最佳的。
一个字符串值是排在一起的一串零或零以上的 Unicode 字符(字母、数字和标点符号)。
什么是Unicode?
Unicode为每个字符都提供了唯一的数值,不管是什么平台、什么程序或什么语言。开发unicode是为了给处理世界上存在的所有字符提供统一的编码。

数值数据类型
我们需要明白一点,JScript 内部将所有的数值表示为浮点值,因此,在 Jscript 中整数和浮点值没有差别。

oolean数据类型
布尔(逻辑)只能有两个值:true 或 false。

js数组和对象
详情看我这篇文章->javascript学习总结— —数组和对象部分
Null 数据类型:可以通过给一个变量赋 null 值来清除变量的内容。
Jscript中 typeof 运算符将报告 null 值为 Object 类型,而非类型 null。

  1. <span style="background-color: white;"><font face="微软雅黑" size="3">
  2. <P> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> </P>
  3. <P> <head> </P>
  4. <P><FONT face=NSimsun>  </FONT><meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> </P>
  5. <P><title></title> </P>
  6. <P><script type="text/javascript"> </P>
  7. <P>    alert(typeof null); </script> </P>
  8. <P></head> </P>
  9. <P><body></P>
  10. <P></body> </P>
  11. <P></html></P></font></span>
复制代码
null用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象。

Undefined 数据类型:
如下情况将返回 undefined 值:
  对象属性不存在,声明了变量但从未赋值。
null和undefined的区别
  1. <span style="background-color: white;"><font face="微软雅黑" size="3">
  2. <DIV class=container>
  3. <DIV class="line number1 index0 alt2"><FONT face=NSimsun><CODE class="js plain"><script type=</CODE><CODE class="js string">"text/javascript”> </CODE></FONT></DIV>
  4. <DIV class="line number2 index1 alt1"><CODE class="js string"><FONT face=NSimsun>var box = new Object(); //创建一个引用类型 </FONT></CODE></DIV>
  5. <DIV class="line number3 index2 alt2"><FONT face=NSimsun><CODE class="js string">var box = "</CODE><CODE class="js plain">lee";  </CODE><CODE class="js comments">//基本类型值是字符串 </CODE></FONT></DIV>
  6. <DIV class="line number4 index3 alt1"><FONT face=NSimsun><CODE class="js plain">box.age = 23;  </CODE><CODE class="js comments">//基本类型值添加属性很怪异,因为只有对象才可以添加属性。 </CODE></FONT></DIV>
  7. <DIV class="line number5 index4 alt2"><FONT face=NSimsun><CODE class="js plain">alert(box.age); </CODE><CODE class="js comments">//不是引用类型,无法输出; </CODE></FONT></DIV>
  8. <DIV class="line number6 index5 alt1"><CODE class="js plain"><FONT face=NSimsun></script></FONT></CODE> </DIV></DIV></font></span>
复制代码
3.JScript 的运算符

优先级:指运算符的运算顺序,通俗的说就是先计算哪一部分。
结合性:同一优先级运算符的计算顺序,通俗的说就是从哪个方向算起,是左到右还是右到左。
数据类型转换
String() 转换为字符串类型
Number() 转换为数字类型
Boolean() 转换为布尔类型
parseInt:将字符串转换为整数。从字符串的开头开始解析,在第一个非整数的位置停止解析,并返回前面读到所有的整数。如果字符串不是以整数开头的,将返回NaN。如:parseInt(“150 hi”)返回的值是:150,parseInt("hi")返回的值是:NaN。
parseFloat:将字符串转换为浮点数。 从字符串的开头开始解析,在第一个非整数的位置停止解析,并返回前面读到所有的整数。如果字符串不是以整数开头的,将返回NaN。如:parseFloat("15.5 hi") 返回的值是:15.5,parseFloat("hi 15.5")返回的值是:NaN。
(, 下载次数: 78)
4.js流程控制

对于js流程控制语句,这里只讲几个比较难懂的。其他不赘述。等下附上一张思维导图。
1.for...in 语句对应于一个对象的每个,或一个数组的每个元素,执行一个或多个语句。
  1. <span style="background-color: white;"><font face="微软雅黑" size="3">
  2. <P>for (variable in [object | array]) </P>
  3. <P>statements</P></font></span>
复制代码
参数:
variable:必选项。一个变量,它可以是 object 的任一属性或 array 的任一元素。
object, array:可选项。要在其上遍历的对象或数组。
statement:可选项。相对于 object 的每个属性或 array 的每个元素,都要被执行的一个或多个语句。可以是复合语句。
虽然条件控制语句(如if语句)只在执行多条语句的情况下才要求使用代码块(左花括号"{"开头,右花括号"}"结尾),但最佳实践是始终使用代码块。
  1. <span style="background-color: white;"><font face="微软雅黑" size="3">if(args) alert(args);//容易出错
  2. if(args){ alert(args);//推荐使用 }</font></span>
复制代码
(, 下载次数: 79)
js流程控制语句思维导图

5.js函数
函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。
Jscript 支持两种函数:一类是语言内部的函数,另一类是自己创建的。
JavaScript 函数允许没有参数(但包含参数的小括号不能省略),也可以向函数传递参数供函数使用。
更多关于函数的知识请访问我的另一篇文章:javascript学习大总结(四)function函数(预备发布)部分

对象的组成
  1. <STRONG></STRONG>
复制代码
最后,再附上一张前辈总结的思维导图:
(, 下载次数: 63)










评分

参与人数 15HB +16 THX +9 收起 理由
消逝的过去 + 1
zxjzzh + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
agan8888 + 1
fjgh + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
雷神来了 + 2
ding520 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
playboy + 1
samtry + 1 + 1 [快捷评语] - 分享精神,是最值得尊敬的!
Signal_over + 2 + 1 分享精神,是最值得尊敬的!
xiachunjie + 1 这个应该加精!
wxbwxb + 1 吃水不忘打井人,给个评分懂感恩!
pojieing + 1 + 1 分享精神,是最值得尊敬的!
tianxia + 1 学破解论坛1周年了,感谢大家的付出与关注。学破解论坛助你呼风唤雨!!!
lyf1995 + 2 + 1 热心人终将成为大牛!
Dean + 3 + 1 我很赞同!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Dean 发表于 2014-10-12 20:41 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
起凡第一华佗 发表于 2014-11-2 01:30 | 显示全部楼层

我来舔一下
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
baby 发表于 2015-12-12 12:32 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
静忍 发表于 2015-12-12 14:43 | 显示全部楼层

还是没有太搞懂这个论坛是做什么用的呢?
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
小鱼 发表于 2016-2-9 16:38 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
samtry 发表于 2017-11-23 21:12 | 显示全部楼层

这篇文章好,特别是哪几张图形。
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
HLearn 发表于 2020-4-13 16:23 | 显示全部楼层

感谢楼主分享,学完java后学习js
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
fjgh 发表于 2022-5-1 11:28 | 显示全部楼层


[快捷回复]-软件反汇编逆向分析,软件安全必不可少!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

快速回复 返回顶部 返回列表