爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
楼主: 15195775117

[已收纳]JavaScript基础笔记

[复制链接]
 楼主| 发表于 2019-11-15 15:50:26 | 显示全部楼层
本帖最后由 15195775117 于 2020-10-30 10:45 编辑

该楼删除,内容与后面的重叠
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-15 15:52:39 | 显示全部楼层
本帖最后由 15195775117 于 2020-10-30 10:44 编辑

【布尔值】
布尔值:true,false
空串、0、NaN、null、undefined都是false
双叹号可以用来判断变量是否真:
document.writeln(!!0)
document.writeln(!!3)
document.writeln(!!'')
document.writeln(!!'abc')
输出:false true false true
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-15 15:58:37 | 显示全部楼层
本帖最后由 15195775117 于 2020-10-30 10:46 编辑

【语法大杂烩】
(编程语言都一样啊)
取余%
字符串连接+
&&与,||或,!非
==,!=,>=
2>3?4:5
分号结尾可以不加,独立一行默认有分号
特殊值:Infinity、NaN
表单:
var x=prompt('请键入数字:','例如123,之后数字会翻倍')
document.writeln(x*2)
360截图20191115154227763.jpg

密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-15 16:05:01 | 显示全部楼层
本帖最后由 15195775117 于 2020-10-30 10:46 编辑

【数字与字符串互转】
360截图20191115160117574.jpg

密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-18 11:43:55 | 显示全部楼层
本帖最后由 15195775117 于 2020-10-30 10:47 编辑

【函数异常捕捉】
<!DOCTYPE html>
<html dir ="ltr" xml:lang="zh-CN">
<meta charset="UTF-8">
<title>JavaScript</title>
<script>
//函数f判断2数字之和的奇偶:
function f(a,b){
if(f.length != arguments.length){
document.writeln('形参个数是',f.length)
document.writeln('实参个数是',arguments.length)
//个数对不上就抛出异常
throw new Error("参数个数不对!")}
else {
if((a+b)%2==1){return '奇数!'}
if((a+b)%2==0){return '偶数!'}}
}
document.writeln('试验1<br/>结果:',f(3,4))
document.writeln('<p>试验2:</p>')
try{f(2,3,4)}
catch(e){document.writeln(e.message)}
</script>
</html>
输出:
试验1
结果:奇数!
试验2:
形参个数是2 实参个数是3 参数个数不对!

密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-18 14:15:16 | 显示全部楼层
本帖最后由 15195775117 于 2020-10-30 10:47 编辑

【多样函数写法】
//一次性函数---匿名函数,这里的z是返回值:
var z=function(a,b){return a+b}(3,4)
document.writeln(typeof(z))//number类型
//这里的z是函数名:
var z=function(a,b){return a+b}
document.writeln(typeof(z))//function类型
document.writeln(z(4,5))
//参数也可以是函数
var f=function(g,a,b){return z(a,b)}
document.writeln(f(z,2,3))
输出:
number function 9 5

密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-18 15:11:19 | 显示全部楼层
本帖最后由 15195775117 于 2020-10-30 10:49 编辑

【闭包函数(类)】
闭包是JavaScript最强大的特性之一。
闭包最简单的描述就是,函数位于另一个函数的函数体内。内部函数可以访问它们所在的外部函数中声明的所有局部变量、参数和声明的其他内部函数。
当其中一个这样的内部函数在包含它们的外部函数之外被调用时,就会形成闭包。
内部函数会在外部函数返回后被执行。而当这个内部函数执行时,它仍然必需访问其外部函数的局部变量、参数以及其他内部函数。这些局部变量、参数和函数声明(最初时)的值是外部函数返回时的值,但也会受到内部函数的影响。

以我的理解,闭包函数=类

案例:f返回参数的2倍,外部函数limit限制内部函数f的使用次数
function limit(){
var t=0;
        function f(x){
        t=t+1;
        document.writeln('t值:',t);
        if(t >= 3){return -999;}
        else {return x*2;}
        }
        return f;
}//相当于新建类:
var f=limit()
document.writeln('<br/>返回值',f(3))
document.writeln('<br/>返回值',f(3))
document.writeln('<br/>返回值',f(3))
document.writeln('<br/>返回值',f(3))
document.writeln('<br/>返回值',f(3))

结果:
t值:1
返回值6 t值:2
返回值6 t值:3
返回值-999 t值:4
返回值-999 t值:5
返回值-999

密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-18 15:36:58 | 显示全部楼层
本帖最后由 15195775117 于 2020-10-30 10:50 编辑

【对象类】
JS的对象写法类似结构体,包含的函数相当于“方法”
var c={
a:4,
b:5,
f:function(x,y){return x+y}
}
document.write(c.a,'        ')
document.write(c.b,'        ')
document.write(c.f(111,222))
输出:4        5        333
新建对象类的写法与其他面对对象写法一样:
var date=new Date();

密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-18 16:23:57 | 显示全部楼层
本帖最后由 15195775117 于 2020-10-30 10:51 编辑

【数组操作】
//数组元素类型没有限制
x=[1,2,'a','b']
document.write('数组长度:',x.length)
document.write('<br/>x[2]=',x[2])
//修改元素:
x[2]=666
document.write('<br/>x[2]=',x[2],'<br/>')
//剪尾巴
x.length=3
document.write(x,'<br/>')
//追加元素
x.push(7,8,9)
document.write(x,'<br/>')
//pop一次删一个尾部元素:
x.pop()
x.pop()
document.write(x,'<br/>')
//从头部加元素:
x.unshift(11,22,33)
document.write(x,'<br/>')
//从头部一个一个减元素:
x.shift()
x.shift()
document.write(x,'<br/>')
//插入、抽取、删减的综合函数splice,会改变原数组:
//参数有2或3个:起始索引,元素个数,(插入元素)
//没有插入元素=删除元素
//返回值是被删除或取代的元素
x=[1,2,3,4,5,6,7,8,9]
//把456变成abc:
cut=x.splice(3,3,'a','b','c')
document.write('被提取元素:',cut,'<br/>')
document.write('提取后数组:',x,'<br/>')
//删除序列3-5的元素:
cut=x.splice(3,3)
document.write('删除后数组:',x)

输出:
数组长度:4
x[2]=a
x[2]=666
1,2,666
1,2,666,7,8,9
1,2,666,7
11,22,33,1,2,666,7
33,1,2,666,7
被提取元素:4,5,6
提取后数组:1,2,3,a,b,c,7,8,9
删除后数组:1,2,3,7,8,9

总结:
追加若干个元素:x.push(...)、x.unshift(...)
逐个减去尾部元素:x.pop()
从头部加元素:x.unshift(...)
逐个减去头部元素:x.shift()
splice函数可按索引删除、提取元素

密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-18 16:57:29 | 显示全部楼层
本帖最后由 15195775117 于 2020-10-30 10:52 编辑

【数组操作2】
x=[1,2,3,4,5]
x=x.join('-')
document.write('连接:',x,'<br/>')
cut=x.split('-')
document.write('劈开:',cut,'<br/>')
x=[1,2,3,4,5]
//截取索引2-4的元素,末尾不算(与py一样),不覆盖:
document.write('截取:',x.slice(2,4),'<br/>')
//reverse方法覆盖原数组:
x.reverse()
document.write('逆序:',x,'<br/>')
//concat追加元素不会覆盖原数组
a=[1,2]
b=['c','d']
document.write([a,b],'<br/>')
document.write(a.concat(b),'<br/>')
document.write(a,'<br/>')

密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

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