小菜的前端编程散谈(4)
2015-09-17 00:04 周信达 阅读(190) 评论(0) 编辑 收藏 举报小菜的前端编程散谈(4)
接上篇做一些补充吧,之前讲到过编程中的类型和函数,比如声明一个变量必须指定类型,或者说声明一个函数必须指定参数类型和返回类型。其实在动态编程语言中,并不是这样的。动态编程语言比较灵活和自由,我可以列举以下几个特征:
- 声明变量不需要指定类型,比如 var count = 0; var只是一个变量声明的关键字而不是一个类型标识,其实声明之后,count的类型是通过值进行推断出来的
- 变量可以重新赋值,比如 上面已经声明了变量count并且赋值为0,编译器推断它为数值类型。然后我在程序后面可以重新使用诸如 count = "hello world";这样的代码,就是说count的值已经动态变成了一串字符串了,而且类型也变成了字符串类型了。所以js里面var是什么含义呢?它完全不是类型标识,它就是一个代号一个关键字,这是一个变量,它可以表示任何东西。这一点需要和传统的静态编程语言区分开来
- 函数不必指定参数类型,也不必指定返回值类型。比如 function getCount(list){ ... },如果按照静态编程语言,这里应该是 function int getCount(array list){ ... },但这里却不是,动态编程语言(比如js)的函数是不需要在定义的适合指定参数类型和返回类型的。这一点需要注意,有时候这样类型的灵活会带来一些不好的地方,为什么呢?可以思考一下
我在这里说明这些,其实是想说明,我拿静态编程语言举例子,只是为了方便理解而已,具体在编程中,还是要参照具体的编程语言环境和语法进行编码
控制流程
这里我就不具体阐述程序控制流程的那些说明了,我把它们列出来,自己在代码里面敲一遍理解一下。如果你确定你已经充分了解他们的用法和使用场景,那么直接跳过就行了
- if 分支
- if ... else if 分支
- if ... else 分支
- switch 分支
- while 循环
- do ... while 循环
- for(i=0;i<10;i++) { ... } 循环
- for(var item in list) { ... } 循环
- 循环中的continue 循环继续
- 循环中的break 循环中断
- 函数中的return 函数返回
插一下关于逻辑操作符合运算符的知识:
- && 并且
- || 或者
- = 赋值运算符
- 或者=,相等运算符
再讲一个小例子,了解一下运算符的优先级:
比如,if(a){ b = a} ,可以表示为 a && (b=a) ,为什么呢?试想一下,假设有一个布尔类型是这样表示的: bool positiveEven = (a>0 && a%20),表示正的偶数,a大于0并且a可以被2整除(余数为0),它们的判断顺序是怎么样的呢?先判断a>0这个逻辑,如果a>0的逻辑成立再判断后面a%20的这个逻辑。想想看,这里面的优先级判断,是不是有一个条件判断的意味在里面?因为如果a<0的话,后面那一句肯定就不用再判断了,直接就返回false了。嗯,想想一下||(或)这个逻辑操作符,其实它这个是反过来的逻辑,想一下!
补充几道题目吧,有空做一下:
1)在网页上显示一个时钟和日期,要求实时更新,显示时分秒就可以了。
2)用javascript打印100以内的斐波那契数列
3) 给定一个数组[3,7,5,8,2,1,10,9,4],写一个函数,对这个数组进行排序
尽量试着做一下吧,最好是能够做出来。了解一下自己哪方面的不足,记下来,写出来
后记
后面我准备讲一下函数传值问题,然后讲一下引用类型和值类型,再往后开始讲讲基本的算法和数据结构了。OK,先就这样