javascript变量、运算符、语句
①能被转化为布尔值false的值有:{undefined、null、0、-0、NAN、”“};其他的包括所有对象(数组、函数)都将被转化为true
②包装对象:在存取字符串、数字或者布尔值的属性时所创建的临时对象称为包装对象。例如:String()\Number()\Boolean()等构造函数来显示创建包装对象
③parseInt(xxx)-解析数字为整数 || parseFloat(xxx)-解析数字为浮点数{两者都将忽略前导0,若第一个为非数字则解析为NAN}
④静态语言:编译时必须指定变量的数据类型如c、c++、java、c#等..
动态语言:在第一次复制时指定变量的数据类型如Ruby、python、js等⑤在javascript中当未使用var来声明一个变量时,使用delete操作符可以删除变量;相反,当使用var时该变量不能被delete操作符进行删除
⑥javascript的优先级和结合性:js中表达式的运算是按照从左至右的顺序。
例:b=(a++)+a 当a=1时 首先计算b,再计算(a++),此时a还是1 最后计算a 最终将两者相加赋值给b,因此b=3
例2:b=(++a)+a 当a=1时 首先计算b,再计算(++a),此时a值为2 最后计算a 最终将两者相加赋值给b,因此b=4
⑦算术运算符分类:加(+),减(-),乘(*),除(/),取余(%)
⑧在使用加(+)运算符时,它的转化规则会先考虑”字符串拼接”;若左右两操作数都不是类字符串的话则进行算术加法运算
例:1+2+"ljx" --> "3ljx" || 1+(2+"ljx") --> "12ljx"
⑨字符串的比较是区分大小写的,所有大写的ASCII字母都”小于”小写的ASCII字母。其中比较运算符首先将操作数转化为数字然后再比较大小,若不能转换的为NAN
例:"11">3 --> true
①in运算符:它希望它的左操作数是一个字符串或者是可以转换为字符串的式子,而希望右操作数是一个对象,如果右侧对象拥有一个名为左操作数的属性名,则返回true
例: var a=[7,8,9] "0" in a -在a中存在a["0"]这个属性-> true;"1" in a -在a中存在a["1"]这个属性-> true;"3" in a -在a中不存在a["3"]-> false
②instanceof运算符:它希望它的左操作数是一个对象,而右操作符为标识对象的类,若左侧对象是右侧类的实例,则返回true,否则返回false
③逻辑与(&&)特性:
<1>当左右操作数均为true时,返回true,当左右操作数有一方为false时返回false
<2>左右操作数不一定是布尔值,也有一些被当做”真值”或”假值”
*<3>短路特性:当左操作数计算结果为假值时,那么整个表达式一定是假,并且返回左操作数的计算值;当左操作数计算结果为真值时,则需要看右操作数的值,若右操作为假值则整个表达式为假,且返回右操作数的值 ;若右操作数为真值则整个表达式为真,且返回右操作数的值
例:if(a==b) stop(); 等价于 a==b && stop()
④eval:解释运行由javascript源代码所组成的字符串,并产生一个值;eval()只含一个参数,如果传入的参数不是字符串,它将直接返回这个参数;如果是字符串,它会将该字符串当初javascript代码进行编译
⑤delete一元操作符:它用来删除对象属性或者数组元素,但用户通过var语句所声明的变量、由function语句定义的函数和函数参数不能删除
例:var a = [1,2,3]; delete a[1] 此时console.log(a) ->得到a[1,3] 但是a.length却为3 意思是数组的长度不变 只是原来被删除的位置被undefined占了罢了
⑥利用for-in 循环来将对象中的属性复制到一个数组中
例:var o={x:1,y:2,z:3} var a=[],i=0; for(a[i++] in o); console.log(a) --> a["x","y","z"]
⑦return语句只能在函数体内出现;break、continue只能在循环体内出现
⑧“use strict”语句:在代码前使用该指令,则此段代码将会以严格模式执行,比如其中调用函数(不是方法)中的一个this值将会得到undefined–(在非严格模式下,调用的函数中的this值总是指向全局对象)
使用这段代码来检测是否是在严格模式下:var subClass=(function(){"use strict";return this===undefined}());
javascript笔记1
最新推荐文章于 2025-08-08 17:07:36 发布