8、第九 - WEB开发基础 - JavaScript函数及序列化、转义
JavaScript的函数:大体会分为是三个,普通函数、匿名函数、自执行函数(创建函数并且自动执行)。
A、循环语句
for语句:
第一种:
for (var item in [11,22,33]) { console.log(item); continue; } 第二种: var arra = [11,22,33] for (var i=0;i<arra.lenght;i=i+1){ console.log(i) }
while语句:
while (判断条件){
  执行代码  
} 
B、条件语句
if(判断条件){
}else if(判断条件){
}else if(判断条件){
}esle {
}
C、switch case 语句
switch(变量){
case 变量值1:
    //;
    break;
case 变量值2:
    //...;
    break;
  ...
case default:
    //...;
    break;
}
如:
name = 3
switch (name){
    case '1':
        age = 123;
        break;
    case '2':
        age  = 456;
        break;
    default:
        age = 7;
    }
备注:swtich()变量类型只能是int、short、char、byte和enum类型;
  switch case执行时,一定会先进行匹配,匹配成功返回当前case的值,再根据是否有break,判断是否继续输出,或是跳出判断。
  注意的是case后面只能是常量,可以是运算表达式,但一定要符合正确的类型。不能是变量,即便变量在之前进行了赋值,JVM依然会报错。
A、普通函数:
function fun() {
	var chen = "chen1203"   //执行主体
}
B、匿名函数:
function fun(arg) {
    return arg+1
    }
setInterval("fun()",5000);  // 定时器
setInterval(function () {
    console.log(123);
    })
C、自执行函数(创建函数并且自动及执行)
<script>
     function fun(arg) {
        console.log(arg);
       }
     (function(arg) {
        console.log(arg)
        })(1)
</script>
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、正则表达式
1、定义正则表达式
- /.../ 用于定义正则表达式
 - /.../g 表示全局匹配
 - /.../i 表示不区分大小写
 - /.../m 表示多行匹配
 - JS正则匹配时本身就是支持多行,此处多行匹配只是影响正则表达式^和$,m模式也会使用^$来匹配换行的内容)
 
var pattern = /^Java\w*/gm; var text = "JavaScript is more fun than \nJavaEE or JavaBeans!"; result = pattern.exec(text) result = pattern.exec(text) result = pattern.exec(text)
注:定义正则表达式也可以 reg= new RegExp()
2、匹配
JavaScript中支持正则表达式,其主要提供了两个功能:
- test(string) 检查字符串中是否和正则匹配
 
n = 'uui99sdf' reg = /\d+/ reg.test(n) ---> true # 只要正则在字符串中存在就匹配,如果想要开头和结尾匹配的话,就需要在正则前后加 ^和$
- exec(string) 获取正则表达式匹配的内容,如果未匹配,值为null,否则,获取匹配成功的数组。
 
获取正则表达式匹配的内容,如果未匹配,值为null,否则,获取匹配成功的数组。
 
非全局模式
    获取匹配结果数组,注意:第一个元素是第一个匹配的结果,后面元素是正则子匹配(正则内容分组匹配)
    var pattern = /\bJava\w*\b/;
    var text = "JavaScript is more fun than Java or JavaBeans!";
    result = pattern.exec(text)
 
    var pattern = /\b(Java)\w*\b/;
    var text = "JavaScript is more fun than Java or JavaBeans!";
    result = pattern.exec(text)
 
全局模式
    需要反复调用exec方法,来一个一个获取结果,直到匹配获取结果为null表示获取完毕
    var pattern = /\bJava\w*\b/g;
    var text = "JavaScript is more fun than Java or JavaBeans!";
    result = pattern.exec(text)
 
    var pattern = /\b(Java)\w*\b/g;
    var text = "JavaScript is more fun than Java or JavaBeans!";
    result = pattern.exec(text)
3、字符串中相关方法
obj.search(regexp)                   获取索引位置,搜索整个字符串,返回匹配成功的第一个位置(g模式无效)
obj.match(regexp)                    获取匹配内容,搜索整个字符串,获取找到第一个匹配内容,如果正则是g模式找到全部
obj.replace(regexp, replacement)     替换匹配替换,正则中有g则替换所有,否则只替换第一个匹配项,
                                        $数字:匹配的第n个组内容;
                                          $&:当前匹配的内容;
                                          $`:位于匹配子串左侧的文本;
                                          $':位于匹配子串右侧的文本
                                          $$:直接量$符号
    人有傲骨终不贱,脚踏实地见真章;
超出预期为工作,价值体现显能力。
                    
                
                
            
        
浙公网安备 33010602011771号