惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Help Net Security
Help Net Security
G
Google Developers Blog
雷峰网
雷峰网
WordPress大学
WordPress大学
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Engineering at Meta
Engineering at Meta
Security Latest
Security Latest
T
Threat Research - Cisco Blogs
AWS News Blog
AWS News Blog
F
Full Disclosure
C
Cybersecurity and Infrastructure Security Agency CISA
T
The Exploit Database - CXSecurity.com
J
Java Code Geeks
U
Unit 42
C
Cyber Attacks, Cyber Crime and Cyber Security
V
V2EX
C
Cisco Blogs
博客园 - 司徒正美
Project Zero
Project Zero
L
LINUX DO - 热门话题
阮一峰的网络日志
阮一峰的网络日志
Blog — PlanetScale
Blog — PlanetScale
Scott Helme
Scott Helme
A
About on SuperTechFans
Hugging Face - Blog
Hugging Face - Blog
S
Securelist
小众软件
小众软件
aimingoo的专栏
aimingoo的专栏
S
Schneier on Security
G
GRAHAM CLULEY
酷 壳 – CoolShell
酷 壳 – CoolShell
Cyberwarzone
Cyberwarzone
MongoDB | Blog
MongoDB | Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 叶小钗
T
Threatpost
Recorded Future
Recorded Future
C
CXSECURITY Database RSS Feed - CXSecurity.com
宝玉的分享
宝玉的分享
N
News and Events Feed by Topic
人人都是产品经理
人人都是产品经理
The Register - Security
The Register - Security
S
Security Archives - TechRepublic
博客园 - Franky
N
News | PayPal Newsroom
Simon Willison's Weblog
Simon Willison's Weblog
S
SegmentFault 最新的问题
W
WeLiveSecurity
A
Arctic Wolf
B
Blog

博客园 - 小居工作室

七牛云存储客户端(本人开发,开源) 如鹏网 net高级技术 第二章 委托和事件(复习) 如鹏网 net高级技术 第一章 各种知识点(复习) 写个QuartzHelper类 Pdf File Writer 中文应用(PDF文件编写器C#类库) 如鹏网 静态Web开发 第五章:JQuery 如鹏网 静态Web开发 第四章:JSDom 如鹏网 静态Web开发 第二章:css 如鹏网 静态Web开发 第一章:html 如鹏网.Net三层架构 第四章代码生成器 如鹏网.Net三层架构 第三章MD5和NPOI使用 如鹏网.Net三层架构第二章登录和会员管理 如鹏网.Net三层架构第一章三层基础 如鹏网.Net高级技术9.XML文件操作 如鹏网.Net高级技术8.反射 如鹏网.Net高级技术6.正则表达式 如鹏网.Net高级技术7.委托、事件 如鹏网.Net高级技术5.泛型集合及键值对 如鹏网.Net高级技术3.值类型和引用类型 如鹏网.Net高级技术4.String特点及常用方法
如鹏网 静态Web开发 第三章:Javascript
小居工作室 · 2016-03-06 · via 博客园 - 小居工作室

本章主干知识点:

1、定义js的三种方式:写到html标签中;写到html的script标签中;写到单独的js文件中;

2、JavaScript中类型的转换

3、function、匿名function

4、js中字符串常见用法;

5、js中的万能集合Array:是数组“['aa','bbb']”、又是字典{name:'rupeng',age":8}

--------------------------------------------------------------------------------------

什么是JavaScript(简称js)?

 JavaScript是一种脚本语言

 常见的脚本:cmd,t-sql,vbscript等等都属于脚本语言

 Javascript的作用

HTML只是描述网页长相的标记语言,没有计算、判断能力,如果所有计算、判断(比如判断文本框是否为空、判断两次密码是否输入一致)都放到服务器端执行的话网页的话页面会非常慢、用起来也很难用,对服务器的压力也很大,因此要求能在浏览器中执行一些简单的运算、判断。JavaScript就是一种在浏览器端执行的脚本语言。

可以直接嵌入HTML页面,但写成单独的js文件有利于结构和行为的分离

跨平台特性,在绝大多数浏览器的支持下,可以在多种平台下运行(如WindowsLinux、Mac、Android、iOS等)。

 --------------------------------------------------------------------------------------

JS的开发环境及动态语言

WebStorm,:  Ctrl+/ 注释快捷键

Editplus,

Nodpad++,

Dreamweaver MyEclipse,

Visual Studio201*;

JS是非常灵活的动态语言,开发工具中的JS完成功能只是一个辅助、建议。

“.”出来的成员调用可能不能用,

“.”不出来的成员也许也能调用,因此不要因为“点儿不出来”而担心代码有问题。

编写js时,自己应该清楚当前对象有些什么成员,不能依赖智能提示。

动态语言:在运行时确定数据类型。

JavaScript基本组成

Dom(文档对象模型)由著名的w3c制定

 (封装好的一些函数库在html于xml中都是用dom)

DOM:Document Object Model

--------------------------------------------------------------------------------------

JavaScript语法及注意事项

大小写敏感 :JavaScript严格区分大小写。(n与N是两个不同的变量。)

弱类型语言,声明变量用var:var num=10;num=true;可以

字符串可以用单引号:var msg=‘坚持不泄’

每句话后面分号:

虽然如果语句结束后可以不加分号,建议有个好的代码风格,手动加“分号”的好处:1>可以放心的做js压缩(压缩多余空白)2>提高代码可读性.

Js的注释,与C#、Java的相同(//单行注释(推荐)、/*  多行注释 */

很多语法与Java语言或C#语言类似。有Java语言或C#语言编程基础的同学学习JavaScript语法会很容易上手。

--------------------------------------------------------------------------------------

JavaScript初级

编写第一个JavaScript程序:我的年龄是18岁

编写第二个JavaScript程序:显示当前时间

<script language=“...” >现在我们已经不推荐这种写法了。

网页中的JavaScript代码应该放到<script></script>标签中,<script>标签可以放到<head>、<body>等任意位置,并且一个页面可以有不止一对<script></script>标签。放到<head>中的<script>在body加载之前就已经运行了。写在body中的<script>是随着页面的加载而一个个执行的。

alert()函数是弹出一个消息窗口。new Date()创建一个Date对象,默认时间是当前时间。

Javascript如果遇到错误,有错误的<script></script>中的代码不会执行,但是不会影响后面的而其他<script></script>代码和html的显示。(演示)

--------------------------------------------------------------------------------------

JavaScript导入和错误

外部导入:

导入外部JavaScript文件:除了可以在页面中声明JavaScript以外,还可以将JavaScript写到单独的js文件中,然后在页面中引入:<script src=“test.js”type=“text/javascript”></script>。

 声明到单独的js文件的好处是多页面也可以共享、减小网络流量。

 可以将导入外部文件的<script>标签写在文档最后,提高用户体验。

注意

在<script></script>标签中不要出现’</script>’元素。

错误:

<script src=“test.js” type=“text/javascript”/>否则会有问题,这是一个比较特殊的地方。(×)

--------------------------------------------------------------------------------------

JavaScript的事件

JavaScript中也有“事件”的概念。

案例1:

单击一个按钮显示当前时间。就触发了一个事件

 <input type=“button” onclick=“ js代码" />

 案例2:

单击一个超链接显示当前时间。

 <a href=“javascript:js代码”>热点文字</a>

 超链接为“死链”时,使用#与javascript:void(0);的区别。void(0)没有用的值,不会去任何地方,就没有意义了

--------------------------------------------------------------------------------------

JavaScript变量 声明

变量命名规则:以字母、下划线或$开头,中间可以包括字母、数字、下划线或$。(变量命名中多了一个$),一般不要用$开头。

 JavaScript中即可以使用双引号声明字符串,也可以使用单引号声明字符串。主要是为了方便和html集成,避免转义符的麻烦。

 JavaScript是动态类型,因此

 var i=10;i=‘test’是合法的。

 var m,n,x,y=10;是否合法

-------------------------------------------------------------------------------------

JavaScript数据类型

Boolean(布尔)Number(数字)String(字符串)Undefined(未定义)Null(空对象)Object(对象类型)、Function

引用类型:对象、数组、函数。

原始数据类型:数值、布尔值 、null  、字符串

值类型的变量不能动态添加成员。

引用类型的对象可以动态添加成员。(演示) new出来的和funcation。

变量是不是对象就看后面有没有new。

undefined与其他值计算得到的结果不是我们想要的。

一个变量声明了,没有初值那么结果就是undefined.属于未知状态

一个变量赋值为null。空对象。 表示的是尚未存在的对象.已知状态

typeof可以做什么

Instanceof可以做什么

 -------------------------------------------------------------------------------------

JavaScript中的“==”与“===”

  -------------------------------------------------------------------------------------

JavaScript中判断变量是否可用

JavaScript中判断已声明变量、参数是否初始化(可用)的方法:

假设已有变量x:

if (typeof(x) !=‘undefined’ && x!=null) {     alert("可用");     }

if(x) { alert(‘变量可用!’); } else { alert(‘变量不可用!’); } //null、undefined、’’、0都认为是false

当x声明但没有赋值,或x为null,或x为0时,都表示不可用!// if(x),返回false

推荐用最后一种方法。但如果x有可能没有声明,则只能用typeof判断(否则会报错)。

经常会遇到的一个场景:if语句的小括号中直接写一个变量。各种值与Boolean之间的关系。

如果确定x存在使用:if(x){}

如果不确定X是否存在使用:if(typeof(x)!='undefined' && x!=null){}

-------------------------------------------------------------------------------------

JavaScript转义

JavaScript中字符串同样需要转义符。

 C:\Users\Administrator\Desktop\代码\logo.png如何做?

 \t、\n、\’、\”、\\

if-else、for、while、do-while、switch、continue、break的用法都非常的简单

for循环稍有差异:for(var i=0;i<10;i++){ …  }

注:switch判断时,是“全等于”,===

案例:通过switch判断变量n=10是数字还是字符串显示给与用户

 -------------------------------------------------------------------------------------

类型转换

parseInt(arg)将指定的字符串,转换成整数 NaN

parseFloat(arg)将指定的字符串,转换成浮点数

Number(arg)把给定的值(任意类型)转换成数字(可以是整数或浮点数);转换的是整个值,而不是部分值。如果该字符串不能完全转换为整型,则返回NaN。(Not a Number)

 

isNaN(arg),判断arg是否为一个非数字(NaN),NaN与NaN也不相等

String(arg)把给定的值(任意类型)转换成字符串;

Boolean(arg)把给定的值(任意类型)转换成 Boolean 型; 

 -------------------------------------------------------------------------------------

函数声明

JavaScript中声明函数的方式:

不需要声明返回值类型、参数类型。函数定义以function开头。

JavaScript中不像C#和java那样要求所有路径都有返回值没有返回值就是undefined。

undefined:没有定义;没有返回值。

无参数无返回值的方法,无参数有返回值的方法,有参数有返回值的方法。(演示)

代码演示,结论:JavaScript中没有方法重载。

易错:自定义函数名不要和js内置、dom内置方法重名,比如selectAll、focus等函数名不要用。//不要与系统函数重名。(在单击事件中调用自己定义的focus方法,有问题。与系统的focus()方法重名了)

一般在js中编写大括号都是直接跟在后面。

演示return的例子

-------------------------------------------------------------------------------------

代码演示

结论:JavaScript中没有方法重载。

方法中写参数叫命名参数

用户调用计算多个数的和的方法,如何获取方法中有多少个参数?

-------------------------------------------------------------------------------------

匿名函数

var f1=function(p1,p2){ return p1+p2; };//将函数赋值给一个变量

匿名函数没法调用,只能赋值给一个变量,由于是赋值语句,后面要加分号

(function(p1,p2){alert(p1+p2);})(20,30);

这种匿名函数的用法在jQuery中的非常多。

-------------------------------------------------------------------------------------

看看执行结果

var x=1;

var y=0;

var z=0;

var add=function (n){n=n+1;return n}

y=add(x);

add=function(n){n=n+3;return n;}

z=add(x);

alert(y+’,’+z);//执行结果?

-------------------------------------------------------------------------------------

匿名函数测试练习

function aa()

{

alert("aaa");

return function(){alert("bbb");};

}

alert(aa);

alert(aa());

alert(aa()());

-------------------------------------------------------------------------------------

JavaScript变量的作用域

默认如果直接在script标签中定义变量,则属于“全局作用域范围”(全局执行环境),即属于window对象。

 全局作用域范围的变量直到网页关闭或浏览器关闭时才释放资源

 一个页面中的多个<script>标签中的变量可以互相访问。

 JS有垃圾回收机制,会定时对可释放资源的变量回收。将变量设置为null则表示可以被回收了。

注意:在函数内部的for或者while或者if等块中声明的变量,作用域范围也是整个函数之内,所以为了避免混淆,不如直接在函数内一开始的时候就声明这些变量。var n=10;function ff(){n++;}; ff();alert(n);

 变量使用前可以不用var声明,这样的变量会变认为是“全局变量”(不推荐)

结论:JS中没有块级作用域范围。

 

-------------------------------------------------------------------------------------

String的常用方法

length属性:获取字符串的字符个数。

charAt(index)方法:获取指定索引位置的字符,索引从0开始

indexOf(‘e’,index)方法:获取指定字符串第一次出现的位置。startIndex表示从第几个开始搜索。

split(‘分隔符’,limit);根据分隔符将一个字符串返回为一个数组。limit表示要返回的数组的最大长度(可自定义)。

substr(startIndex,len)从startIndex开始,截取len个字符。

substring(startIndex,stopIndex)从startIndex开始,截取到stopIndex位置,不包括stopIndex所在的字符。

toUpperCase()转换大写、toLowerCase();转换小写

-------------------------------------------------------------------------------------

Array声明方式

JavaScript中的Array对象就是数组,首先是一个动态数组,而且是一个像C#、Java中“数组、List、HashMap/Dictionary”等的超强综合体。

数组的使用方式:

 

var names = new Array();//无需初始化长度,动态

 

-------------------------------------------------------------------------------------

Array对象使用

循环遍历数组(forin循环)

 

使用forin循环可以遍历对象的所有属性。forin循环其实遍历的还是key.

数组的其他几种声明方式

 

var arr = [90,true,100];(推荐。)

JS中的Array是数组还是键值对

字典风格的简化创建方式:

 var arr = {“帅”:”shuai”,“哥”:”ge”};//json格式。

 Dictionary风格数组的length为0。所以不能用for遍历。

 键值对中可以有function,键值对做参数,可以体现一个参数多个值

键值对是可以作为参数进行传递

 

-------------------------------------------------------------------------------------

Array小案例

自己定义通用的max方法进行比较-比较器

Array系统中的排序和反转-自

调用系统的sort方法

如鹏网:http://www.rupeng.com