博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript
阅读量:6340 次
发布时间:2019-06-22

本文共 5857 字,大约阅读时间需要 19 分钟。

一、简介

JavaScript 是世界上最流行网页脚本编程语言。

这门语言可用于 HTML 和 web,更可广泛用于服务器、PC、笔记本电脑、平板电脑和智能手机等设备。

JavaScript 是可插入 HTML 页面的编程代码。

JavaScript 插入 HTML 页面后,可由所有的现代浏览器执行。

二、使用方式

1、页面直接嵌入javascript代码

javascript代码可以放在 head 标签内,也可以放在 body标签内, 建议放到body底部。

2、调用外部的javascript

三、javascript 数据类型

1、原始数据类型

字符串、数字、布尔、数组、对象、Null、Undefined

var x                // x 为 undefinedvar x = 5;           // x 为数字var x = "tom";      // x 为字符串

 

字符串,可以使用单引号,也可以使用双引号

var foo='bar'var foo="bar"

数字, javascript中只有一种数字,可以带小数点,也可以不带小数点

var x1=34.00;      //使用小数点来写var x2=34;         //不使用小数点来写

极大值或者极小值可以使用科学计数来表示

var y=123e5;      // 12300000var z=123e-5;     // 0.00123

 

布尔值,javascript中布尔值只有两个值,true和false

var x=truevar y=false

 

数组(下面代码为cars的数组)

var cars=new Array();cars[0]="Audi";cars[1]="BMW";cars[2]="Volvo";

或者以下边的方式创建

var cars=new Array("tom","lilei","hanmeimei");

或者以类似python 列表的方式创建

var cars=["tom","lilei","hanmeimei"];

 

 

2、对象数据类型

1、Number

转换:

  • parseInt(..)    将某值转换成数字,不成功则NaN
  • parseFloat(..) 将某值转换成浮点数,不成功则NaN

特殊值:

  •  NaN,非数字。可使用 isNaN(num) 来判断。
  • Infinity,无穷大。可使用 isFinite(num) 来判断。

2、String

字符串是由字符组成的数组,但在JavaScript中字符串是不可变的:可以访问字符串任意位置的文本,但是JavaScript并未提供修改已知字符串内容的方法。

字符串常见方法

obj.length                           长度 obj.trim()                           移除空白obj.trimLeft()obj.trimRight)obj.charAt(n)                        返回字符串中的第n个字符obj.concat(value, ...)               拼接obj.indexOf(substring,start)         子序列位置obj.lastIndexOf(substring,start)     子序列位置obj.substring(from, to)              根据索引获取子序列obj.slice(start, end)                切片obj.toLowerCase()                    大写obj.toUpperCase()                    小写obj.split(delimiter, limit)          分割obj.search(regexp)                   从头开始匹配,返回匹配成功的第一个位置(g无效)obj.match(regexp)                    全局搜索,如果正则中有g表示找到全部,否则只找到第一个。obj.replace(regexp, replacement)     替换,正则中有g则替换所有,否则只替换第一个匹配项,                                     $数字:匹配的第n个组内容;                                     $&:当前匹配的内容;                                     $`:位于匹配子串左侧的文本;                                     $':位于匹配子串右侧的文本                                     $$:直接量$符号

 

3、Boolean

创建Boolean对象

var myBoolean=new Boolean()

注释:如果逻辑对象无初始值或者其值为 0、-0、null、""、false、undefined 或者 NaN,那么对象的值为 false。否则,其值为 true(即使当自变量为字符串 "false" 时)!

值为false的对象

var myBoolean=new Boolean();var myBoolean=new Boolean(0);var myBoolean=new Boolean(null);var myBoolean=new Boolean("");var myBoolean=new Boolean(false);var myBoolean=new Boolean(NaN);

值为true的对象

var myBoolean=new Boolean(1);var myBoolean=new Boolean(true);var myBoolean=new Boolean("true");var myBoolean=new Boolean("false");var myBoolean=new Boolean("Bill Gates");

 

Boolean 对象的比较符号

  • ==      比较值相等
  • !=       不等于
  • ===   比较值和类型相等
  • !===  不等于
  • ||        或
  • &&      且

 

4、数组

数组的方法

bj.length          数组的大小 obj.push(ele)       尾部追加元素obj.pop()           尾部获取一个元素obj.unshift(ele)    头部插入元素obj.shift()         头部移除元素obj.splice(start, deleteCount, value, ...)  插入、删除或替换数组的元素                    obj.splice(n,0,val) 指定位置插入元素                    obj.splice(n,1,val) 指定位置替换元素                    obj.splice(n,1)     指定位置删除元素obj.slice( )        切片obj.reverse( )      反转obj.join(sep)       将数组元素连接起来以构建一个字符串obj.concat(val,..)  连接数组obj.sort( )         对数组元素进行排序

  

四、其他

1、序列化

JSON.stringify(obj)   序列化JSON.parse(str)        反序列化

 

2、转义

decodeURI( )                   URl中未转义的字符decodeURIComponent( )   URI组件中的未转义字符encodeURI( )                   URI中的转义字符encodeURIComponent( )   转义URI组件中的字符escape( )                         对字符串转义unescape( )                     给转义字符串解码URIError                         由URl的编码和解码方法抛出

 

3、eval

JavaScript中的eval是Python中eval和exec的合集,既可以编译代码也可以获取返回值。eval() EvalError   执行字符串中的JavaScript代码

 

4、正则表达式

JavaScript中支持正则表达式,其主要提供了两个功能:test(string)     用于检测正则是否匹配exec(string)    用于获取正则匹配的内容

 

注:定义正则表达式时,“g”、“i”、“m”分别表示全局匹配,忽略大小写、多行匹配。

 

5、时间处理

JavaScript中提供了时间相关的操作,时间操作中分为两种时间:时间统一时间本地时间(东8区)

 

五、判断循环

1、判断语句

if语句

if (time<10)  {  x="Good morning";  }else if (time<20)  {  x="Good day";  }else  {  x="Good evening";  }

switch语句

var day=new Date().getDay();switch (day){case 0:  x="Today it's Sunday";  break;case 1:  x="Today it's Monday";  break;case 2:  x="Today it's Tuesday";  break;case 3:  x="Today it's Wednesday";  break;case 4:  x="Today it's Thursday";  break;case 5:  x="Today it's Friday";  break;case 6:  x="Today it's Saturday";  break;}

 

2、循环语句

for 循环

for (var i=0,len=cars.length; i
");}

省略方式的for循环

var i=2,len=cars.length;for (; i
");}

省略方式2 for循环

var i=0,len=cars.length;for (; i
");i++;}

for/in 语句循环遍历对象的属性

var person={fname:"John",lname:"Doe",age:25};for (x in person)  {  txt=txt + person[x];  }

  

while语句

while (i<5)  {  x=x + "The number is " + i + "
"; i++; }

do while

do  {  x=x + "The number is " + i + "
"; i++; }while (i<5);

 

六 异常

try {    //这段代码从上往下运行,其中任何一个语句抛出异常该代码块就结束运行}catch (e) {    // 如果try代码块中抛出了异常,catch代码块中的代码就会被执行。    //e是一个局部变量,用来指向Error对象或者其他抛出的对象}finally {     //无论try中代码是否有异常抛出(甚至是try代码块中有return语句),finally代码块中始终会被执行。}

 

七、函数

1、基本函数

// 普通函数    function func(arg){        return true;    }          // 匿名函数    var func = function(arg){        return "tony";    }  // 自执行函数    (function(arg){        console.log(arg);    })('123')

 

2、闭包

「闭包」,是指拥有多个变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。

闭包是个函数,而它「记住了周围发生了什么」。表现为由「一个函数」体中定义了「另个函数」

由于作用域链只能从内向外找,默认外部无法获取函数内部变量。闭包,在外部获取函数内部的变量。

function f2(){    var arg= [11,22];    function f3(){        return arg;    }    return f3;} ret = f2();ret();

 

3、面向对象

function Foo (name,age) {    this.Name = name;    this.Age = age;    this.Func = function(arg){        return this.Name + arg;    }}  var obj = new Foo('alex', 18);var ret = obj.Func("sb");console.log(ret);

 

上述代码中每个对象中均保存了一个相同的Func函数,从而浪费内存。使用原型和可以解决该问题:

function Foo (name,age) {    this.Name = name;    this.Age = age;}Foo.prototype = {    GetInfo: function(){        return this.Name + this.Age    },    Func : function(arg){        return this.Name + arg;    }}

  

 

转载于:https://www.cnblogs.com/9527chu/p/5789497.html

你可能感兴趣的文章
Oracle技术之缺少log_archive_config导致归档路径被禁用
查看>>
Oracle 临时表之临时表的应用问题
查看>>
Linux之进程查看与管理
查看>>
碟中谍:完成任务机房是核心
查看>>
戴尔联合微软开发私有云入门级系统
查看>>
图片轮播滚动
查看>>
关于客户端与服务端时区不同导致客户端上的时间不准问题的解决方案
查看>>
我的日常Git使用
查看>>
基于Windows AD的单点登录系统(二)
查看>>
第17章 重新登录
查看>>
java 表现层:jsp、freemarker、velocity
查看>>
内置函数, 递归, 二分法
查看>>
java jni和android java ndk
查看>>
Kotlin技术分享:中缀调用、解构声明
查看>>
property函数
查看>>
数论 - 组合数学 + 素数分解 --- hdu 2284 : Solve the puzzle, Save the world!
查看>>
.Net 从零开始构建一个框架之基本实体结构与基本仓储构建
查看>>
C#核编之内建数据类型
查看>>
Oracle运算符收录(易忘记,但是又很重要的运算符)
查看>>
POJ 2062 Card Game Cheater
查看>>