接下来简单介绍js的基本语法,js的很多语法和一般的c语言相似
1.区分大小写
2.标识符命名:第一个字符不得是数字
3.注释:与C语言相似
4.noscript元素
部分浏览器是不支持js的或者用户自己选择不加载js脚本,这时候我们可以通过设置noscript元素来告诉用户,你要下载js脚本才能看到更多的内容。当浏览器支持js,noscript内的内容不会被显示出来
5.变量
js的变量是松散类型的,意思就是可以用来保存任何类型的数据。一个变量仅仅只是一个用于保存值得占位符罢了。定义变量时要使用var操作符后跟变量名
var message='HI';
*如果定义变量的时候不使用var,则表示该变量为全局变量,但是这种做法并不建议使用,原因是在会给后期维护带来很大的不便。
6.数据类型
6-1.typeof操作符
因为js变量是松散类型的,那就需要一个方法来检测变量内的数据类型
语法:
typeof string;typeof 95;typeof (object);//虽然圆括号可使用,但是因为typeof不是函数,而是操作符,所以为了规范,不建议使用圆括号
*typeof可能返回以下几种类型:
(1)number——如果这个值是数值
(2)object——如果这个值是对象或null
(3)function——如果这个值是函数
(4)undefined——如果这个值还未定义
(5)boolean——如果这个值是布尔值
(6)string——如果这个值是字符串
说明:如果调用typeof null,则会返回object,因为在js中null会被认为是一个空对像引用;在Safari以及之前版本、Chrome7及之前版本在对正则表达式调用typeof时会返回function,而其他浏览器则返回object。而如果用typeof调用一个从未声明也未被定义的变量,也同样会返回undefined。
6-2.undefined
undefined类型只有undefined一个值可取
eg:
var message; alert(message==undefined); var message=undefined; alert(message==undefined);
说明:上面的例子说明undefined字面量和未定义的变量两者是等价的,但我们没有必要在定义时赋值undefined,因为未定义数值就会默认取得undefined
6-3.Null
Null类型同样也是只有一个值null,null表示一个空对像指针,所以使用typeof时会返回一个object字符串。如果我们在定义变量的时候将来用于保存对像,最好就是初始化为null,这样就可以在检测的时候通过下列语句判断是否已经保存了一个对象的引用。
if(car !=null){//对该对象进行操作}
此外,undefined派生于null,所以他们的相等性测试总是返回true
alert(null==undefined);
6-4.Boolean类型
Boolean类型只有两个值:true和false,true不一定就是1,false不一定就是0;
任何类型的值都有对应的Boolean值,下面是对应的表格
数据类型 | 转换为true值 | 转换为false值 |
Boolean | true | false |
String | 任何非空字符串 | “”(空字符串) |
Number | 任何非零字符串(包括无穷大) | 0和NAN(非数值类型) |
Object | 任何对象 | null |
undefined | n/a (not applicable)意为不适用 | undefined |
将上述类型转换为Boolean型可以使用Boolean()函数,不过一般转换都会自动执行如
var message="hello world; if(message){//自动执行转换 alert("value is true"); }
6-5.Number类型
(1)浮点数值
对于浮点数值需要注意的有一点,浮点数值的精度是有限的,所以永远不要测试某个特定的浮点数值。
if(a+b==0.3)//不要进行这样的测试 { alert("You got a 0.3"); }
另外,由于内存的限制,存在最大值和最小值,这两个值都被保存在Number.MIN_VALUE和Number.MAX_VALUE中,如果数值超出了这个范围,就会自动转换为InFinity或者-InFinity
(2)NaN(非数值)
这个数值用于本来要返回一个数值却未返回数值的情况,可以避免报错。任何涉及NaN的操作都会返回NaN,而且NaN与任何值都不相等,包括本身。
isNaN可以判断一个值是不是NaN数值,返回的值为布尔值
alert(isNaN(NaN));//true alert(isNaN(10));//false alert(isNaN("10"));//自动转换为数值,返回false alert(isNaN(”blue”));//true alert(isNaN(true));//false(自动转换为1)
(3)数值转换
有三个函数可以把非数值转换为数值:Number()、parseInt()、parseFloat()
第一个函数可以用于任何数据类型,而另外两个则专门用于把字符串转换数值
1.Number()
转换规则:
*如果是布尔值,true返回1,false返回0
*如果是数值,则只是单纯的传入和返回
*如果是null值,返回0
*如果是undefined值,则返回NaN
*如果是字符串,则有多情况:
~如果字符串只包含数字,则返回当中的数字
~如果字符中包含有效的十六进制或八进制,则转换为对应的十进制
~如果字符串是空的,则转换为0
~如果字符串不包含以上的条件,都将返回NaN,比如“1234fsdag”
*如果是对象,则调用对象的valueOf()方法,然后依照前面的规则转换返回的值,如果转换的结果是NaN的值,则调用对象的toString()方法,然后再次依照前面的规则转换返回的字符串值。(对于valueOf和toString有不懂的,参见http://www.jb51.net/article/32327.htm)
2.parseInt()
转换规则:如果第一个字符不是数字字符或者负号,就会返回NaN,也就是说,和前面Number不同的是,对于空格,parseInt()会返回NaN而不是0;在对待十六进制方面,parseInt和Number方法一样,但是对于八进制,js5则认为是十进制,比如“070”,应该是转换为十进制则是56,而js5则认为是70。为了消除这种困惑,可以为这个函数提供第二个参数:转换时的基数。
var num=parseInt("AF",16);//175 var num2=parseInt("AF"); //NaN
*为了避免错误的解析,建议在任何情况下,都明确指定基数
3.parseFloat()
转换规则:与parseInt()相似,parseFloat也是从第一个字符开始解析,而且解析到末尾,或者遇到一个无效的小数点(如:12.5.4,将会转换为12.5);但是该方法没有第二个参数,所以对于十六进制的数将始终转换为0
6-6.string类型
字符串可以由单引号或双引号包括,包含时需要交替使用.
转换为字符串toString(),几乎每个值都有这个方法,但是null和undefined没有该方法;这个方法唯一要做的就是返回相应值的字符串表现,而且数值转换为字符串时可以通过引入参数来决定输出的进制。
var num=10; alert(num.toString());//"10" alert(num.toString(2));"1010"
如果不清楚变量是不是null或undefined,可以使用String(),对于null和undefined会对应返回null和undefined的字符串
6-7.object类型
创建对象:
var o=new object();//圆括号可省略,但不推荐
方法:
1.构造函数:object()
2.检查给定属性是否在当前对象实例中:hasOwnProperty("propertyName");
o.hasOwnproperty("name");
3.检查传入的对象事都是当前对象的原型:isPrototypeOf(object);
函数将返回布尔值,对于原型的概念将在另一个随笔中提及。
4.检查当前属性是否能够使用for-in语句来枚举:propertyIsEnumerable(propertyName);
5.返回对象的字符串表示,该字符串与执行环境的地区对应:toLocaleString()
6.返回对象字符串表示:toString();
7.返回对象的字符串,数值或布尔值表示:valueOf();
7.操作符
一元操作符:只能操作一个值德操作符叫做一员操作符。
1.递增和递减操作符(直接参照c语言)
注意:在对于不同类型变量的情况下,有不同的应对方法:
(1)含有有效数字的字符串,现将其转换为数字值,在执行加减操作
(2)不含有有效数字时,将值设为NaN
(3)布尔值,对于false会先转换为0,true先转换为1
(4)对于对象,采取与使用转换字符串时候的方法,调用valueOf函数取得可操作值,再应用上述规则,如果结果时NaN,则使用toString方法再应用上述规则
2.位运算符(js中很少使用,不做随笔)
3.函数:
(1)return语句:函数在遇到return语句后将立刻结束函数。return其实也可以不带有任何返回值,这样函数在停止执行的时候就会返回undefined
(2)理解参数:
js函数其实不介意传递进来的参数是什么类型,甚至也不在意传进来有多少个参数,因为js中的参数在内部是用一个数组来表示的。函数接收到的始终是这个数组,这个数组我们可以通过arguments对象来访问,这个对象和数组类型,可以使用方括号来访问里面的每一个项:argument[0],表示函数的第一个参数。但为了简便理解,我们还是建议在声明函数的时候,也声明形参。(另外,我们也可以在函数中同时使用命名参数以及argument对象)
(3)没有函数重载
其实这也非常之好理解,因为在js中,变量是宽松型的,可以为任意类型的数据类型,所以不需要重载。
来源:https://www.cnblogs.com/runhua/p/6464123.html