JavaScript详解(三)
JavaScript的数组
JavaScript中的数组具有相当的灵活性,除了能存储数据外,还提供了一系列的属性和方法。因为JavaScript本身是一个弱类型语言,故其数组不会限制存放数据的类型。
定义的四种方式:
- var x = new Array(); //空数组
- var x = new Array(size); //指定长度
- var x = new Array(element0,element1...,elementn); //指定初始值
- var x = [element0,element1...,elementn]; //指定初始值
读取数组可用其下标,从0开始,当超出下标边界,不会报错,而是返回一个undefined。
改变数组长度的三种方式:
- 未超出数组长度的下标赋值
- 改变数组的length属性
- 通过数组的相应方法,如unshift、push。
数组的常用方法:
- array.concat():参数放一个或多个数组,使它们连接在一起。
- array.join():将数组所有元素放入一个字符串中,并以指定参数的形式作为分隔符进行分隔。
- aray.unshift():向数组开头添加一个或多个元素,并返回新的长度。
- array.push():向数组末尾添加一个或多个元素,并返回新的长度。
- array.shift():向数组开头删除一个元素并返回它。
- array.pop():向数组末尾删除一个元素并返回它。
- array.splice(m,n,'x'):一个参数m,返回指定的前m+1个元素;两个参数m、n,从下标m开始,删除n个元素;三个参数m、n、'x',从下标m开始,删除n个元素,并在后面加上‘x'。
- array.isArray():判断array是否是数组。
- array.reverse():颠倒数组中元素的顺序。
- array.sort():按ASCll码排序。
数组的排序是按ASCII码,故对于有负数的数字,排序并不准确,下面会举例。故可通过传入一个方法——比较器,通过返回值绝对是顺序还是逆序的数字排序。正数表示正序排序,负数表示逆序排序,0表示不排序。
var a = [1,5,8,2,6,-5,-1];
alert(a.sort())
//-1,-5,1,2,5,6,8
var a = [1,5,8,2,6,-5,-1];
a.sort(function (x, y) { //x和y是数组的两个元素
return x>y; //x>y返回正数,正序排序
})
alert(a);
//-5,-1,1,2,5,6,8
var a = [1,5,8,2,6,-5,-1];
a.sort(function (x, y) { //x和y是数组的两个元素
return x<y;//x<y返回负数,逆序排序
})
alert(a);
//8,6,5,2,1,-1,-5
var a = [1,5,8,2,6,-5,-1];
a.sort(function (x, y) { //x和y是数组的两个元素
return x==y; //x=y,返回0
})
alert(a);
//1,5,8,2,6,-5,-1
JavaScript的hash结构
JavaScript出支持数组外,还支持键值对格式的数据,一般称为hash,类似于python中的字典。
定义方式:
- var x = {}; //定义空hash
- var x = {'key1':'value1','key2':'value2'...};//指定初始化
读取数据方式:
- x.key
- x['key1']
若读取没有的键值对,会返回undefined
hash的遍历:通过for in循环。
var a = {'name':'wl','age':66,'sex':'boy'};
for (key in a){
var value = a[key];
console.log(value);
}
//wl 66 boy
JavaScript的函数
JavaScript的函数分为有名函数和匿名函数以及函数表达式。有名函数就是普通定义的有名函数,加括号就执行,不加括号可以充当一个事件函数。匿名函数一般不单独出现,一般充当事件函数。函数表达式的特点就是后面加上括号就立即执行,匿名函数可以通过一些措施变成函数表达式。
函数定义:
function a(){ //有名函数
//函数体
}
function(){ //匿名函数
//函数体
}
匿名函数可以通过在函数前加 + 、- 、!、~、()变成函数表达式。
函数返回值默认返回undefined
实参与形参数目可以不同,当形参大于实参,未收到的实参会默认为undefined,值为NaN;当形参小于实参时,多余的实参接收不到不会报错。
不定参的关键字是arguments,在函数体内,通过下标获取传递来的实参,还可通过属性length获取实参的长度。
sum(1,2,3,4,5,6,7,8,9,10);
function sum() {
console.log(arguments.length);
console.log(arguments[2]);
var x = 0;
for(var i = 0 ; i < arguments.length ; i++){
x += arguments[i];
}
console.log(x);
}
JavaScript代码的执行顺序
理解JavaScript的执行规律很重要,在这点上它与其他语言不同。先给一个小例子。
alert(a);
var a = 5;
alert(a);
上面代码执行并不会报错,先打印一个undefined,再打印一个5,很多初学者对于这点会很奇怪。其实只要理解其执行规律就能明白了。JavaScript的执行分两步,先从上而下解析一次,再从上而下执行一次。
- 解析:解析主要看var 、function(参数 ),对于var,解析时定义一个变量,并给他初始化一个undefined,但不赋值,对于函数,只定义函数,但不执行函数体。如果变量和函数名重名,函数优先。
- 执行:解析完后,从上而下执行。碰到函数执行,会产生一个新的作用域,在函数体内再次先做解析,后执行。
JavaScript详解(三)的更多相关文章
- .NET DLL 保护措施详解(三)最终效果
针对.NET DLL 保护措施详解所述思路完成最终的实现,以下为程序包下载地址 下载 注意: 运行环境为.net4.0,需要安装VS2015 C++可发行组件包vc_redist.x86.exe.然后 ...
- Android 之窗口小部件详解(三) 部分转载
原文地址:http://blog.csdn.net/iefreer/article/details/4626274. (一) 应用程序窗口小部件App Widgets 应用程序窗口小部件(Widget ...
- WebSocket安卓客户端实现详解(三)–服务端主动通知
WebSocket安卓客户端实现详解(三)–服务端主动通知 本篇依旧是接着上一篇继续扩展,还没看过之前博客的小伙伴,这里附上前几篇地址 WebSocket安卓客户端实现详解(一)–连接建立与重连 We ...
- logback -- 配置详解 -- 三 -- <encoder>
附: logback.xml实例 logback -- 配置详解 -- 一 -- <configuration>及子节点 logback -- 配置详解 -- 二 -- <appen ...
- python设计模式之装饰器详解(三)
python的装饰器使用是python语言一个非常重要的部分,装饰器是程序设计模式中装饰模式的具体化,python提供了特殊的语法糖可以非常方便的实现装饰模式. 系列文章 python设计模式之单例模 ...
- Python操作redis字符串(String)详解 (三)
# -*- coding: utf-8 -*- import redis #这个redis不能用,请根据自己的需要修改 r =redis.Redis(host=") 1.SET 命令用于设置 ...
- pika详解(三)SelectConnection及其他Connection
pika详解(三)SelectConnection及其他Connection 本文链接:https://blog.csdn.net/comprel/article/details/94661147 ...
- Android WebView 开发详解(三)
转载请注明出处 http://blog.csdn.net/typename/article/details/40302351 powered by miechal zhao 概览 Android ...
- Day03 javascript详解
day03 js 详解 JavaScript的基础 JavaScript的变量 JavaScript的数据类型 JavaScript的语句 JavaScript的数组 JavaScript的函数 Ja ...
- View绘制详解(三),扒一扒View的测量过程
所有东西都是难者不会,会者不难,Android开发中有很多小伙伴觉得自定义View和事件分发或者Binder机制等是难点,其实不然,如果静下心来花点时间把这几个技术点都研究一遍,你会发现其实这些东西都 ...
随机推荐
- 八、React实战:可交互待办事务表(表单使用、数据的本地缓存local srtorage、生命同期函数(页面加载就会执行函数名固定为componentDidMount()))
一.项目功能概述 示例网址:http://www.todolist.cn/ 功能: 输入待做事项,回车,把任务添加到 [正在进行] [正在进行] 任务,勾选之后,变成已[经完成事项] [已完成事务], ...
- Linux Mysql 安装 开启远程连接 供python agent 连接测试 Mark
Linux 6.3 (1) cat /etc/redhat-release uname -a 查看yum 源: 阿里源 无源运行: echo 下载阿里云的yum源配置 wget -O / ...
- 服务器上安装解决ole错误
服务器上安装此插件 提取码:9kiw
- UVA_12697 满足条件的最短连续和 线段树维护
好印象深刻的题,前天选拔赛给跪了.怪我这种关键题没敲出来. 题意很简单,给你一串无规则的数列,再给个m值,求出满足 数列和>=m的长度最小的连续子串...确实一开始卡住了,因为看数据肯定是nlo ...
- 了解OOM
1)什么是OOM? OOM,全称“Out Of Memory”,翻译成中文就是“内存用完了”,来源于java.lang.OutOfMemoryError.看下关于的官方说明: Thrown when ...
- select * 和select 1 以及 select count(*) 和select count(1)的区别
select 1 和select * select * from 表:查询出表中所有数据,性能比较差: select 常量 from 表:查询出结果是所有记录数的常量,性能比较高: selelct 常 ...
- @SpringBootApplication 标注非引导类
1.引导类 public class App { public static void main(String[] args) { SpringApplication.run(WebConfigura ...
- java Kafka 简单应用实例
kafka官方中文文档 http://kafka.apachecn.org/ java Kafka 简单应用实例 下面是Linux下的单机模式:https://blog.csdn.net/fct2 ...
- 18 12 06 sql 的 基本语句 查询 条件查询 逻辑运算符 模糊查询 范围查询 排序 聚合函数 分组 分页 连接查询 自关联 子查询
-- 数据的准备 -- 创建一个数据库 create database python_test charset=utf8; -- 使用一个数据库 use python_test; -- 显示使用的当前 ...
- h5-任意元素居中
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...