JS 章节②. 基础应用(中) : 深入JavaScript

1.函数返回值

  • 返回值1
<script>
function show()
{
    return 'advb';
}
var a=show();
alert(a); // 结果: advb
</script>
  • 返回值2
<script>
function show(a, b)
{
    return a+b;
}
alert(show(3, 5));
</script>
  • 返回值3
<script>
function show(a, b)
{
    //return; //没有return
}
alert(show(3, 5));  //结果 : undefined
</script>
<script>
function show(a, b)
{
    return; //没有return任何东西
}
alert(show(3, 5));  //结果 : undefined
</script>
  • 一般求和
<script>
function sum(a, b)
{
    return a+b;
}
alert(sum(12, 6));
</script>
  • 多个参数求和 (arguments 是一个可变数组 )
<script>
    function sum()
    {
        //arguments 是一个可变数组 
        var result=0;
        for(var i=0;i<arguments.length;i++)
        {
            result+=arguments[i];
        }
        return result;
    }
    alert(sum(12, 6, 8, 6, 8, 6, 8)); //结果 : 54
</script>```

- CSS函数 当传入两个参数时获取属性 , 三个参数时,修改样式

<html>
<head>
<meta charset="utf-8">
<title>CSS函数</title>
<script>
function css(obj, name, value)
{
if(arguments.length==2) //获取
{
return obj.style[name];
}
else
{
obj.style[name]=value; //修改
}
}
window.onload=function ()
{
var oDiv=document.getElementById('div1');
//alert(css(oDiv, 'width')); //获取到宽度 200px
css(oDiv, 'background', 'green'); //修改背景颜色为绿色
};
</script>
</head>
<body>
<div id="div1" style="width:200px; height:200px; background:red;">
</div>
</body>
</html>


> ###2.取非行间样式 (也就是样式写在<style></style>之间,或者css文件中)

由于`currentStyle `只兼容`IE`,`getComputedStyle(oDiv, false)`只兼容`Chrome、FF`等,所以可以写一个函数来获取非行间样式
######获取取非行间样式 函数:

function getStyle(obj, name)
{
if(obj.currentStyle) //由于currentStyle只兼容IE,所以在IE浏览器中他是true,其他浏览器中为false
{
return obj.currentStyle[name]; //IE
}
else
{ //计算样式 其中getComputedStyle(oDiv, xxx) 第二个参数可以随便填,一般习惯写false
return getComputedStyle(obj, false)[name]; //Chrome、FF
}
}

示例代码:
通过上面的函数来获取非行间样式 `backgroundColor`

window.onload=function ()
{
var oDiv=document.getElementById('div1');

alert(getStyle(oDiv, 'backgroundColor'));

};

###注意
<a>此函数只适用于单一样式,复合样式不适用!!!</a>
单一样式:width、height、position 等
复合样式:background、border 等

>###3.数组

- 数组基础
 - 数组的使用
定义

var arr=[12, 5, 8, 9]; //一般用这种创建方式,简单
var arr=new Array(12, 5, 8, 9); //也可以这样创建
没有任何差别,[]的性能略高,因为代码短

 - 数组的属性
length

既可以获取,又可以设置 :①.可以获取数组的个数,②.又可以用过array.length = 1;来设置数组的个数;
例子:快速清空数组 //用过array.length = 0;来清空数组;
数组使用原则:数组中应该只存一种类型的变量

 - 数组的方法

   添加

push(元素),从尾部添加一个元素
unshift(元素),从头部添加一个元素

删除

pop(),从尾部删除一个元素
shift(),从头部删除一个元素

 - 插入、删除
`splice` (`音标:[splaɪs]`) : 数组的万能操作
删除

splice(开始,长度) //第一个参数:指定位置;第二个参数:指定长度

插入

splice(开始, 0, 元素…)

先删除,后插入

splice(开始, 长度,元素…)
先删除,后插入

替换

先删除,后插入 可用作替换

 - 数组连接 (两个数组合并) :concat
concat(数组2)
连接两个数组

<script>
var a = [1,2,3];
var b = [4,5,6];
alert(a.concat(b)); 结果:[1,2,3,4,5,6];
alert(b.concat(a)); 结果:[4,5,6,1,2,3];
</script>

 - join(分隔符)
用分隔符,组合数组元素,生成字符串 (学习ajax时,连接网址使用)

<script>
var arr = [1,2,3,4];
alert(arr.join('-')) //1-2-3-4
alert(arr.join('- -p')) //1- -p2- -p3- -p4
</script>

 - 字符串split  (`[splɪt]`分离;分解)
split() 方法用于把一个字符串分割成字符串数组。
stringObject.split(separator,howmany)

separator 必需。字符串或正则表达式,从该参数指定的地方分割 stringObject。
howmany 可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。

使用

如果您希望把单词分割为字母,或者把字符串分割为字符,可使用下面的代码:
"hello".split("") //可返回 ["h", "e", "l", "l", "o"]
若只需要返回一部分字符,请使用 howmany 参数:
"hello".split("", 3) //可返回 ["h", "e", "l"]

  - 排序 sort
`sort([比较函数])`,排序一个数组
排序一个字符串数组
排序一个数字数组
 ① 排序一个字符串数组

<script>
var arr=['float', 'width', 'alpha', 'zoom', 'left'];
arr.sort();
alert(arr); //结果 ['alpha','float','left','width','zoom']
</script>

②排序一个数字数组
  - 2.1 基础版

<script>
var arr=[12, 8, 99, 19, 112];
arr.sort();
alert(arr); //结果: [112,12,19,8,99] //其实他把数字当成字符串来排序了
</script>

 - 2.1 晋级版

<script>
var arr=[12, 8, 99, 19, 112];
arr.sort(function (n1, n2){
if(n1<n2)
{
return -1;//只要是个负数就可以 -2,-7等都可以
}
else if(n1>n2)
{
return 1; //只要是个正数就够了
}
else
{
return 0;
}
});
alert(arr); //结果:[8,12,19,99,112]
</script>

 - 2.2最终版 (由2.1进化而来)

<script>
var arr=[12, 8, 99, 19, 112];

arr.sort(function (n1, n2){
    return n1-n2; //若果n1>n2,为正;如果n1<n2,为负;如果相等,则为0;
});

alert(arr);//结果:[8,12,19,99,112]

</script>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容

  • 获取元素:document.getElementById 通过id获取一个元素obj.getEle...
    蒲公英_前端开发者阅读 608评论 0 4
  • 一、数组 数组是一个有序列表,所以有下标. 并且数组在js中可以存在任意类型的数据.并且同一个数组中可以存放不同的...
    空谷悠阅读 503评论 0 1
  • JS基础讲解 JavaScript组成ECMAScript:解释器、翻译DOM:Document Object M...
    FConfidence阅读 568评论 0 1
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 7,717评论 2 17
  • 怀胎十月,感受着腹中的微动,您幸福的笑了。 一声孩啼,便注定了一生的牵挂,一辈子的付出。 婴儿的啼哭,烦走了白天,...
    心宇心愿666阅读 179评论 0 2