javascript高级程序设计笔记(一)语法和操作符
来源:互联网 发布:时时彩搭建源码 编辑:程序博客网 时间:2024/06/14 15:48
最近看语言精粹这本小册子 结果发现难度有点太高了 很多东西都是一笔带过所以绝对看完函数先来看javascript高程 看起来第一感觉就是会平缓很多
在函数内用var声明的变量 ,在完成这个函数的调用也就是读到这个函数}的时候 会被销毁 注意是销毁。
在函数内用省略var声明的变量在退出函数之后并不会被销毁,所以是可以在函数外围被访问的。
null在javascript中的实现为指向一个空的对象
var nu = null;console.log(typeof nu); //类型为object
所以当我们需要创建一个变量并在未来存储对象 我们可以给他初始化为null
if(nu != null){}
通过这样的方式来检查调用 我认为undefined属于没有右值的情况 而null其实是有有值的 是一个空的对象。
boolean可以被强制转换成数字
Number类型支持10/16/8进制
var a = 078;//8进制
var b = 0xAF;//16进制
浮点数 小数位为空或者小数位为0会被转换成整数
NaN的意思为not a number 所以他是一个特殊数值 通过isNaN来测试是否不是数值
isNaN("HelloWorld")
数值转换有三种方法把其他变量转换成数字
Number();
parseInt();
parseFloat
常用的为parseInt 支持第二个参数帮助标记一下 基数 比如parseInt("AF",16)//标记基数为16进制
字符串有转义比如
\n代表换行符
一般有特殊用途
字符串一旦声明无法更改 所谓的重新绑定字面量只是销毁原来的填充新的
具体首先制造容器 然后填充 接着删除不需要的字符串字面量
几乎所有的值都有这个方法toString(目标进制)//除了undefined null值没有
也可以调用String(value)
这个函数范围最广 包含toString 如果支持toString就调用 如果不支持就把null undefined直接转换。操作符
一元操作符是只能操作一个值的操作符 是最简单的操作符。递增和递减操作符
分前置和后置 前置的就是
++a
先加后调用后置的就是
a++
先调用后加
一元加减操作符
num = +num
对值进行转换 但对值的内容一般不会有所影响 比如true flase会有变化num = -num
把值变成负数
位操作符(底层的更改 高效率 64转换成32位开始运算)
按位非 ~
var num1 = 25; var num2 = ~num1;//-26
结果为内存保存的二进制树挨个取反 且数值-1按位与
25&3//-1
转换成二进制数字对比 两者同位都为1则为1 否则都为0按位或
var num = 25|3;
同样是对比 二者都为0则为0 其他情况都为1按位或异
var num = 25^3;
二者相同为0 不同为1左移
num = num << 5
表示整个移5位 少出来的用0填充 结果一般是增大有符号右移
num = num >> 5
表示符号位右移 少出来的用符号位填充无符号的右移 和上面的类似 但少出来的符号位用0填充 也就是说本来是负数会变成正数 正数还是正数(因为1代表负数 0代表正数嘛)
逻辑操作符
- 逻辑非 用一个!表示 首先把值转换成boolean值 然后取反
- 逻辑与 用两个 & 表示同样转换boolean然后对比 都为true则true 其他均为false 短路 第一个为false就直接结束了
- 逻辑或 用两个|表示 转换 对比 都为false为false 其他均为true 同样短路 找到第一个为true则取消第二次对比 直接返回。而返回值并不一定是true或者false 根据对比的值不同 在obj的情况下返回的就是obj 这也就是利用短路或做后备赋值的原理。
乘性操作符
-乘 除 余 三大 余为var a = 25 % 3;
关系操作符 大于 小于 大于等于 小于等于
字符串之间的比较会比较奇怪 比如两个字符串会挨个对比每个字节 如果你想要进行对比需要都转换成小写
.toLowerCase()
不然大小写无法正确对比两个数字字符串对比会比较编码 一个数字一个数字字符串会转换成数字比较
任何值与NaN对比都为false
相等操作符
==
!=
===
===为严格等于或者叫完全等于 字符串的3和数值3在完全等于下并不相等
条件运算符(三元运算)
赋值操作符
=等于可以和其他的运算符合作 比如
a += 6;
a -= 6;
a *= 6;
a /= 6;
a %= 6;
a <<= 6;
a >>= 6;
a >>>= 6;
with(常用的if for do while 语句就不记了)
with(location){
>由于性能不佳 在大型工程不建议使用
var qs = search.substring(1)
}
switch
var i =4;
switch (i){
case 4:
alert(“4”);
break;
case 6:
// 合并
case 7:
alert(“6”+”7”);
break;
}
- 函数
- 函数的返回会终止函数的指向 return之后的语句不会被执行
- 参数
- js并不关心你传了什么类型的参数 传了多少个因为内部函数接收的时候,接收的只是一个参数组成的数组 他不会访问里面的value 而这个数组可以通过arguments对象来访问 ,这个对象具有一个数组的基本特征。所以你可以通过检查这个对象的特性来执行一些语句 比如length为0就如何如何。这也算是削弱版的重载。
- arguments支持和形参一起使用 比如
arguments[0] + num1;
- arguments还有一个非常重要的特性 他会和实参进行随时的同步 也就是说 当你修改了arguments或者实参的值 两者都会立马同步。 但这并不代表两者指向同一块区域,两者只是保持同步而已。
- 参数 还有一个特性 当你传入的个数与实际不符 实参<形参 那么少出来的用undefined填充 如果实参>形参 多出来被忽略。
- 没有重载
- 重载加java等语言中一个非常重要的特性 其表现为多个函数名称相同(同一等级内)但其签名(参数的个数 与 类型)不同,当你实际调用时,通过不同的签名来进入不同的函数
- 在javascript中 如果你定义了两个名称相同的函数 控制权永远在后定义的函数之中(猜测可能在运行前 提升过程中 后声明的被提升 覆盖前面的函数)
- 因为JavaScript中没有签名这个概念,他并不会检查进来的参数。所以在JavaScript 不可能有完美重载,你只能靠对arguments进行一些检查来做到模仿重载的效果。
- javascript高级程序设计笔记(一)语法和操作符
- javascript高级程序设计笔记--js操作符
- javascript 高级程序设计笔记(一)
- javascript高级程序设计笔记(一)
- JavaScript高级程序设计学习笔记(一)
- JavaScript高级程序设计(笔记一)
- javascript高级程序设计笔记(一)
- 《JavaScript高级程序设计》笔记——chapter3 操作符
- javascript高级程序设计笔记1-数组操作
- JavaScript高级程序设计(笔记)
- JavaScript高级程序设计(第3版)笔记(一)
- 学习《JavaScript高级程序设计》学习笔记(一)
- 精读《JAVAScript高级程序设计》笔记(一)——基本概念
- Javascript高级程序设计学习笔记(一):函数
- js笔记(一)-《javascript高级程序设计》- 数组小知识
- JavaScript DOM高级程序设计笔记__(一)
- JavaScript DOM高级程序设计笔记__(一)
- <JavaScript高级程序设计>笔记一: 函数function
- eclipse通过maven-archetype-plugin插件创建项目原型
- spring学习(一)
- git常用操作
- AlloyTouch之select选择插件
- 设计模式笔记八:过滤器模式
- javascript高级程序设计笔记(一)语法和操作符
- Java基础——类、接口、抽象类、对象
- Ajax Demo
- 利用Clonezilla备份还原Linux系统
- scapy发送无线beacon帧
- git常用命令总结以及用github来展示你的前端页面
- IOC架构设计之事件注入
- leetcode UTF-8 Validation
- UVA 1262 Password (水题)