javascript学习笔记第二天

时间:2021-08-09 20:54:59
2013.8.21
#########命名规范#####################
命名规范及必要性
    可读性--能看懂
    规范性--符合规则
匈牙利命名法
    类型前缀
    首字母大写

前缀:
    数组:        a
    布尔值:        b
    浮点数:        f
    函数:        fn
    整数:        i
    对象:        o
    正则表达式:    re
    字符串:        s
    变体变量:    v

########运算符#######################
算术: +加、-减、乘*、/除、%取模,
    和c不一样的是/除,在js里会除出小数来的,和c不一样!!!
赋值:和c一样
关系:和c不一样的地方有:===、!==,注意==和!=时的隐式转换
逻辑:和c一样
运算符优先级:括号

~~~~~~~~~隔行变色~~~~~~~~~
<!DOCTYPE HTML>
<html>
    <head>
        <title>隔行变色</title>
        <meta charset="utf-8" />
        <script>
            window.onload=function ()
            {
                var aLi=document.getElementsByTagName('li');
                for(var i=0; i<aLi.length; i++)
                {
                    // i
                    if(i%2 == 0)
                    {
                        aLi[i].style.background='#CCC';
                    }
                    else
                    {
                        // 1 3 5 7 9
                        aLi[i].style.background='red';
                    }
                }
            };
        </script>
    </head>

    <body>
        <ul>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
        </ul>
    </body>
</html>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`

###########程序流程控制###################
判断:if、switch、  ?:
循环:while、for
跳出:break、continue
什么是真、什么是假
    真:true、非零数字、非空字符串、非空对象
    假:false、数字零、空字符串、空对象、undefined

上面的结构书写语法上和c一个德性。但有些地方适用范围有点不同。
比如switch就不一样。在c中switch的变量必须是整数或者常量
而在js中,可以是任何类型。

~~~~~~~~~~下拉列表之性别信息~~~~~~~~~~~~~~~~~~~`
<!DOCTYPE HTML>
<html>
    <head>
        <title>性别信息</title>
        <meta charset="utf-8" />
        <script>
        var getSelectValue = function ()
        {
            var oSel = document.getElementById("sel");
            // 得到下拉列表中的选项值
            var sGender = oSel.options[oSel.selectedIndex].value;
            switch(sGender)//在js中,switch可判断字符串等类型
            {    
                case "男":                    
                case "女":
                    alert("你是一个"+sGender+"人!");
                    break;
                default :
                    alert("你是个变态!!!");
                    break;                    
            }
        }            
        </script>
    </head>
    <body>
        <p>请选择你的性别</p>
        <select name="sell" id="sel">
            <option value="男">男</option>
            <option value="女">女</option>
            <option value="不男不女">不男不女</option>
        </select>
        <input id = "btn"  type = "button" value = "性别信息" onclick = "getSelectValue()" />
    </body>
</html>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

############Json######################
什么是Json
Json和数组
Json和for in

Json和数组有点像,都是用来存东西的。
var json={a: 12, b:5, c:'abc'};  //大括号,冒号
json.b++;
alert(b);

注意json和数组间的相似地方和不同之处
var json={a: 12, b: 5, c: 7};
var arr=[12,5,7]; // 数组
数组的下标是一个数字,json的下标是一个字符串。
alert(json['a']);
alert(arr[0]);
数组有length,json没有length
alert(json.length) //undefined

循环
数组的循环有两种方式
(1)
    for(var i=0; i<arr.length; i++)
    {
        alert(arr[i]);
    }
(2)
    for(var i  in arr) // 这个我之前没有见过,叫for in方法
    {
        alert(arr[i]);
    }

for in 不仅可以用于数组,也可以用于json,
    用for in可以解决json循环的问题
    for( var i in json) // 这个i是第一个属性
    {
        alert('第'+i+'个东西: ' + json[i]);
    }

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<!DOCTYPE HTML>
<html>
    <head>
        <title>找出一句话中相同单词出现的次数</title>
        <meta charset="utf-8" />
        <script>
        /*
        需求:找出一句话中相同单词出现的次数
        思路:先将一句话strSentence的单词拆分出来放在一个数组aStrWords中,然后准备一个json,计划其中放置的数据样式是
        类似于{"hello": "1", "good": "2"};
        先遍历数组aStrWords,每遇到一个数组中的元素(就是从句子中拆分出来的字符串),则检查json中是否有相应的元素。
        这里检查的方法是通过判断json中是否有定义来进行的,如果有定义,则json中肯定有(对应else),则将其对应的数字加1.
        如果没有定义,if(typeof(json[aStrWords[i]])=='undefined'),
        则将这个单词加入json中,并将其对应的值设置为1.

        缺陷:分隔单词的时候没有考虑到其他的符号,如逗号,分号等
        */
            var strSentence = "i love you dan dan i love my girl";
            var aStrWords = strSentence.split(" ");
            var json={};
            
            for( var i in aStrWords)
            {
                if(typeof(json[aStrWords[i]])=='undefined')
                {
                    json[aStrWords[i]]=1;
                }
                else
                {
                    json[aStrWords[i]]++;
                }
            }

            for( var j in json)
            {
                alert(j+": "+json[j]);
            }

        </script>
    </head>
    <body>

    </body>
</html>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


##########函数返回值####start###############
函数返回值
    什么是函数返回值
        函数的执行结果
        可以没有return
    一个函数应该只返回一种类型的值



##########函数返回值####end###############

############函数传参#######################
arguments 可变参,不定参
<script>
function sum()  // 参数列表为空时,参数可以不固定,
{
    alert(arguments.lenth);//3
    alert(arguments[0]);//12

    var result = 0;
    for(var i=0; i<arguments.lenth; i++)
    {
        result+=arguments[i];
    }
    return result;
}
alert(sum(12,6,9));
</script>
###################################
dan推荐前端学习资料http://www.rainweb.cn/article/javascript-scope.html
###################################

###################################