javascript 跳跃式前进 (1) - 基本概念

简介: javascript 是弱类型语言,比较接近python和perl这类,不如java和c那样严格.所以写惯了强类型语言的小伙伴看到有些另类的写法也相当正常;有些东东不精讲..以后单独脱离出来细讲;


原文链接: blog.csdn.net


前言


javascript 是弱类型语言,比较接近python和perl这类,不如java和c那样严格.所以写惯了强类型语言的小伙伴看到有些另类的写法也相当正常;


有些东东不精讲..以后单独脱离出来细讲;


要点提取:


语法


  1. 区分大小写[非常重要哦,比如True和False就不是布尔值了,而是标示符]
  2. 和强类型基本大同小异,以强类型的命名风格基本没什么错误;推荐驼峰大小写
  3. 注释有单行和多行注释
  4. 严格模式,速度运行是最快的;但是相当多的东西给限制了
  5. 语句以分号结尾,支持多变量定义[逗号隔开],在语句多的时候,链式写法速度有一定的速度提升;
  6. 关键字和保留字不允许来做变量名[具体查表去吧..很多]


数据类型


有这么些数据类型: undefined(未定义) , Null(空值 – 特殊值) , Boolean(布尔值) , Number(数值) , String(字符串) , Object(对象,这个范围挺广,Array也属于其中),symbol[ES6]


  • undefined : 变量未初始化的默认值
  • null : 是一个特殊的对象[空的对象引用]
  • boolean : 只有true和false两个值,值得注意的是0和1不一定代表false和true
  • Number : js没有双精度.只有单精度..也不像强类型语言,根据是否有小数点且跟值来定义浮点还是整数 , 数值溢出为infinity,[NaN是一个特殊的数值]
  • String : 字符串
  • Object : 函数就是对象..在JS中函数在没有返回值时默认返回的一个对象
  • Symbol : 这个是ES6才加入的,笼统点的说就是特殊的标示符,可以用来区别某些实例或者对象;但不等同于lisp那样的symbol(具体我现在也没深入~~~)


数据判断


typeof , instanceof , hasOwnProperty, isPrototypeOf ,isArray


  • typeof : 会把大多类型归为对象
  • instanceof : 用于判断一个变量是否某个对象的实例
  • hasOwnProperty:是用来判断一个对象是否有你给出名称的属性或对象。不过需要注意的是,此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本身的一个成员。
  • isPrototypeOf: 是用来判断要检查其原型链的对象是否存在于指定对象实例中,是则返回true,否则返回false。
  • isArray : ES5添加专门判断是否为数组的


数据转换


  • Number() : 可以把允许转换成数值的内容变成数值,比如字符串”123”[前置0会忽略],空字符串为0,除能转为数字格式外的字符都会转为NaN
  • paseInt() : 转换字符串为整数,若是”111ee”只会得到111,逐个字符遍历的[若是非数字开头则不会遍历,遇到小数点也会停止]..
  • parseFloat() : 转换字符串为浮点数,与上面那个类似
  • Boolean() : 转为布尔值
  • String() : 把值转为字符串,对象转换会调用ValueOf(),与toString()效果基本一致


操作符


  • 一元操作符 : 包括加减乘除,前置减减加加和后置减减加加[前置先赋值生效再执行,后置执行后再运算]
  • 按位操作符 : 跟强类型语言一致,包括按位非(~)[值的反值,真假调换],按位与(&)[同为真才为真,其他为假],按位或(|)[存真即为真,同假才假],按位异或(^)[相同为假,不同为真]
  • 左移和右移: 左移为乘以2的次幂,右移除以2的次幂..无符号右移[正数不变,符号会因为左边填充0变成一个相当大的正值]
  • 逻辑运算符 : 逻辑与(&&)[同为真才为真,其他为假] ,逻辑或(||)[有真即为真,同假才为假]
  • 相等操作符 : = [赋值,有复合操作符(可以配合加减乘除求余等运算符 ,例如 a %= 3 , b *= 2;)] , == [若允许转换成比较的类型,自动转换匹配的类型比较] , === [强等,不转换比较,同时比较类型和值]
  • 条件运算符[三目运算符] : (expression)? true : false ; 表达式真假来获取对应的返回值


流控制语句


流控制语句,,大多编程语言都是大同小异~~~~


//推荐带花括号,且花括号左边紧贴表达式,可以降低语法解析识别为错误的问题[解析器会自动给一些变量或者语句添加分号]
if(conditions) {
  ...
 }else if{
 ...
}else{
 ...
}


//先执行do里面的逻辑,再执行判断表达式来确定下一步是否执行
  do{
   statement;
  }while(expression)


//适合不知道应该循环多少次的,符合条件就无限执行,带花括号是一个好习惯
   while(expression){
     statement;


//适合有限的循环
 for(initialization ; expression ; post-loop-expression){
    statement;


//[ES5]适合来枚举对象的属性,遇到值为null或者undefined则会抛出错误
   for(proerty in expression){
        statement;
   }


//[ES5] 适合遍历数组,缺点:不能用break跳出循环和用return语句
 //传统是用for来遍历数组...见仁见智哈
var arr = [1,2,3,4];
arr.forEach(function(value){console.log(value)})
//结果集: 1,2,3,4,undefined


//[ES6]这货的出现,更加方便了数组的遍历...
   //它避免了for-in的所有缺陷;
   //与forEach()不一样,它支持break,continue和return。
   var arr = [1,2,3,4];  
   for(var i of arr){
       console.log(i)
   }
   //结果集: 1,2,3,4,undefined


//跟goto好类似....一般配合break和continue语句;在多重嵌套循环的时候,可以满足条件直接跳出整个循环(标签指定的位置)
   label : for(initialization ; expression ; post-loop-expression){
    statement;


//break是跳出循环(中断执行)
    //continue是跳出这次循环,进入下一次循环(只是跳过符合条件的那一次循环,会继续执行到结束)   


//语法和高级编程语言大同小异,适合多重判断(当然不嫌弃麻烦可以用if..elseif...else)
   //小提示.若不是要执行多个表达式..记得每个对应判断条件后必须break结束;否则会依次往下寻找对应的值,其上的所有非包含break的都会执行;
   switch(expression){
        case value1 : statement; break;  
        case value2 : statement; break;  
        case value3 : statement; break;  
         ...
        default:statement;break;
 }


函数


/*
    与大多编程语言一样..函数执行到return语句就结束该函数了..不管后面还有木有表达式;
     因为JS是弱类型语言..  在ES6前,有些东西不得不模拟,比如匿名函数,闭包,"花样式"继承  
     有点值得一提的是,,JS木有重载(当前,以后就不晓得会不会增加)
     这里不多说..到时候在新文章拖出来细细揣摩
*/
    function say(){
          console.log("Hello world!");
    }
    say();
    function say1(args1,args2){
          console.log("Hello world!");
    }
    say1();
目录
相关文章
|
2月前
|
自然语言处理 JavaScript 前端开发
JavaScript中闭包:概念、用途与潜在问题
【4月更文挑战第22天】JavaScript中的闭包是函数及其相关词法环境的组合,允许访问外部作用域,常用于数据封装、回调函数和装饰器。然而,不恰当使用可能导致内存泄漏和性能下降。为避免问题,需及时解除引用,减少不必要的闭包,以及优化闭包使用。理解并慎用闭包是关键。
|
2月前
|
存储 JavaScript 前端开发
解释 JavaScript 中的作用域和作用域链的概念。
【4月更文挑战第4天】JavaScript作用域定义了变量和函数的可见范围,静态决定于编码时。每个函数作为对象拥有`scope`属性,关联运行期上下文集合。执行上下文在函数执行时创建,定义执行环境,每次调用函数都会生成独特上下文。作用域链是按层级组织的作用域集合,自内向外查找变量。变量查找遵循从当前执行上下文到全局上下文的顺序,若找不到则抛出异常。
28 6
|
2月前
|
JavaScript 前端开发 网络协议
​Node.js 教程(一) 基本概念与基本使用
​Node.js 教程(一) 基本概念与基本使用
|
2月前
|
JavaScript 前端开发 Java
Node.js专题讲解 第1期 概念篇
Node.js专题讲解 第1期 概念篇
29 0
|
23天前
|
设计模式 JavaScript 前端开发
在JavaScript中,继承是一个重要的概念,它允许我们基于现有的类(或构造函数)创建新的类
【6月更文挑战第15天】JavaScript继承促进代码复用与扩展,创建类层次结构,但过深的继承链导致复杂性增加,紧密耦合增加维护成本,单继承限制灵活性,方法覆盖可能隐藏父类功能,且可能影响性能。设计时需谨慎权衡并考虑使用组合等替代方案。
35 7
|
19天前
|
JSON JavaScript 前端开发
【JavaScript】JavaScript中的深拷贝与浅拷贝详解:基础概念与区别
JavaScript 中,理解数据拷贝的深浅至关重要。浅拷贝(如扩展运算符`...`、`Object.assign()`)仅复制对象第一层,共享内部引用,导致修改时产生意外联动。深拷贝(如自定义递归函数、`_.cloneDeep`或`JSON.parse(JSON.stringify())`)创建独立副本,确保数据隔离。选择哪种取决于性能、数据独立性和资源需求。深拷贝虽慢,但确保安全;浅拷贝快,但需小心引用共享。在面试中,理解这些概念及其应用场景是关键。
32 4
【JavaScript】JavaScript中的深拷贝与浅拷贝详解:基础概念与区别
|
13天前
|
JavaScript 前端开发
JavaScript函数核心概念:用于代码复用与管理。
【6月更文挑战第25天】JavaScript函数核心概念:用于代码复用与管理。示例包括定义(无参、有参、有返回值)与调用,参数按值传递。函数内修改参数不影响外部变量。
12 1
|
26天前
|
JavaScript 前端开发
深入解析JavaScript中的面向对象编程,包括对象的基本概念、创建对象的方法、继承机制以及面向对象编程的优势
【6月更文挑战第12天】本文探讨JavaScript中的面向对象编程,解释了对象的基本概念,如属性和方法,以及基于原型的结构。介绍了创建对象的四种方法:字面量、构造函数、Object.create()和ES6的class关键字。还阐述了继承机制,包括原型链和ES6的class继承,并强调了面向对象编程的代码复用和模块化优势。
26 0
|
2月前
|
设计模式 JavaScript 前端开发
在JavaScript中,继承是一个重要的概念
【5月更文挑战第9天】JavaScript继承有优点和缺点。优点包括代码复用、扩展性和层次结构清晰。缺点涉及深继承导致的复杂性、紧耦合、单一继承限制、隐藏父类方法以及可能的性能问题。在使用时需谨慎,并考虑其他设计模式。
24 2
|
2月前
|
JavaScript 前端开发
11.JavaScript 事件的概念以及绑定方法
11.JavaScript 事件的概念以及绑定方法