美文网首页
JavaScript和swift类比学习

JavaScript和swift类比学习

作者: Kdq | 来源:发表于2022-05-23 21:52 被阅读0次

通过这次分享让大家初步的了解JavaScript或者是swift,通过两个的类比加深彼此的记忆。

1.变量和常量

定义:
常量是在程序运行过程中,不会被修改的量。也就是说,常量一经赋值,就不能再次赋值了。
变量是在程序运行过程中,可以被多次赋值的量。也就是说,常量即使已经赋值,还可以再次赋值。

JavaScript

变量:var let
常量:const
var let都是变量,下面是两个主要的不同点,相同点大家可以查看链接
1.使用 var 关键字声明的变量不具备块级作用域的特性,它在 {} 外依然能被访问到。

{ 
    var x = 2; 
}
// 这里可以使用 x 变量

let 声明的变量只在 let 命令所在的代码块 {} 内有效,在 {} 之外不能访问。

{ 
    let x = 2;
}
// 这里不能使用 x 变量
  1. 变量提升
    JavaScript 中,var 关键字定义的变量可以在使用后声明,也就是变量可以先使用再声明(JavaScript 变量提升)。
// 在这里可以使用 carName 变量
 
var carName;

let 关键字定义的变量则不可以在使用后声明,也就是变量需要先声明再使用。

// 在这里不可以使用 carName 变量

let carName;
  1. var 允许重新声明
    如果我们用 let 在同一作用域下将同一个变量声明两次,则会出现错误,var是可以的。

swift

变量:var
常量:let

2.常用的数据类型及对应关系

在我们使用任何程序语言编程时,需要使用各种数据类型来存储不同的信息。
变量的数据类型决定了能够存储哪种数据,以及如何将代表这些值的位存储到计算机的内存中。

1、Swift中常用的数据类型有:

字符串(String)、整数类型(Int)、 32位浮点数(Float)、64位浮点数(Double)、布尔值(Bool)、字典(Dictonary)、数组(Array)、可选类型 。

2、JavaScript中常用的数据类型有:

字符串(String)、数字(Number)、布尔(Boolean)、空(Null)、未定义(Undefined)、对象(Object)、数组(Array)。

3、对应关系

下面我们主要对以上数据类型在JavaScript和Swift的对应关系,以及简单的初始化进行讲解,如果想要了解更多的化可以点击数据类型后面的了解更多进行了解。

1.字符串:字符串是存储字符(比如 "Hello, World!")
类型

JavaScript:String了解更多
swift:String了解更多

初始化

JavaScript

var a = 'abc'; 
var a1 = "abc";//双引号单引号都可以
var a2 = String('abc')
var a3 = new String('abc')//object

swift

var a = "abc";
var a1:String = "abc";//必须是双引号
var a2 = String("abc");
var a3 = String.init("abc")

JavaScript 和Swift都有类型推导,会自动根据后面的赋值来推导出标识符的数据类型。

2.数字:数字(比如 3、 3.14)
类型

JavaScript:Number了解更多
swift:Int、Float、Double了解更多

初始化

JavaScript

 var a = 3
 var a1 = Number(3.14)
 var a2 = new Number(3.14)//object

swift
Int:整型
Float:表示32位的浮点类型,可以精确到小数点后6位。
Double: 代表64位精度的浮点数,精确到小数点后15位

var a = 3;
var a1 = Int.init(3);
var a2:Int = 3;
var a3 = Int(3.5);//值是3
var a4 = 3.14;//默认是Double
var a5 = Double.init(3.14) ;
var a6:Double = 3 ;//3.0
var a7 = Float.init(3.14) ;
var a8:Float = 3 ;//3.0

初始化的时候是否可以给一个整型赋值浮点数呢,是可以的,会向下取整,同样也也是可以为浮点类型赋值整数,如赋值3,打印会是3.0,浮点型如果没有指定类型的话默认是Double类型的,我们可以对以上做一下验证。

3.布尔:只能有两个值:true 或 false。
类型

JavaScript:Boolean了解更多
swift:Bool

初始化

JavaScript

 var a1 = true;
 var a2 = Boolean(true)
var a6 = new Boolean(true)//object

swift

var a1 = true;
var a2 = Bool.init(true);
var a3 = Bool(false) ;
var a4:Bool = false;
4.数组:列表存储一系列的值
类型

JavaScript:Array了解更多
swift:Array了解更多

初始化

JavaScript

var a1 = ["Saab", "Volvo", "BMW"];
var a2 = new Array("Saab", "Volvo", "BMW");
var a3 = Array("Saab", "Volvo", "BMW");

swift
Array的初始化和以上的初始话有些区别,如果我们想在声明的时候就指定数组里存储的数据类型,是通过变量名称后加[type]来指定的。

var a1:[Any] = ["Saab", "Volvo", "BMW",true] ;
var a2 = ["Saab", "Volvo", "BMW"] ;
var a3 = Array.init(arrayLiteral: "Saab", "Volvo", "BMW");
var a4 = Array(arrayLiteral: "Saab", "Volvo", "BMW");
var a5:Array = ["Saab", "Volvo", "BMW"];

区别:
JavaScript可以在相同数组中存放不同类型的变量。
Swift 数组默认是储同一类型的多个值,如果需要存储不同类型的数据需要指定数组为Any类型,如果不指定Any类型的话会报错,我们可以验证一下。

4. 键-值对 形式存储数据的数据结构
类型

JavaScript:Object了解更多
swift:Dictonary了解更多

初始化

JavaScript
JavaScript 中的所有事物都是对象:字符串、数值、数组、函数...,对象就是一个 name:value 集合

// 以构造函数形式来调用
new Object([value])
// 也可以使用对象字面量来创建对象,
var a1={firstname:"John", lastname:"Doe", id:5566};

swift
对象[key:value],

var a1 = [Int: String]();
var a2:[Int: Any] = [1:"one",2:2];
var a3 = [1:"one",2:"two"];

注意:默认情况下swift中字典中Key是相同类型的,Value也是相同类型的,只有类型设置为Any才可以放任意类型

5.值缺失的特殊类型
类型

JavaScript:
Null
Undefined
了解更多
swift:Optional了解更多

JavaScript

var a1
var a2 = null

两者的区别就是:undefined 表示一个变量自然的、最原始的状态值,而 null 则表示一个变量被人为的设置为空对象,而不是原始状态。所以,在实际使用过程中,为了保证变量所代表的语义,不要对一个变量显式的赋值 undefined,当需要释放一个对象时,直接赋值为 null 即可。

swift
OC中没有Optional类型,OC中所有对象变量都可以为nil,因为nil是无类型的指针。在OC中字典、数组、集合都不能放入nil,但是在Swift中,nil不是指针,只是值缺失的特殊类型,任何类型可选项都可以设置为nil
Swift中我们在变量类型后面添加 ?来表示一个可选项,例如:

var a1: String?

如果没有指定Optional变量是不能被设置为nil的,我们可以来验证一下
可选项是比较特殊的,如果一个变量被设置为了可选项,他是不能直接被使用的,比如下面这行代码是会报错的

let count = a1.count;

那么我们怎么去获取一个可选项的值呢?
1.!强制解包,例如:

let count = a1!.count;

使用这种方法你要保证可选项是有值的,没有值的时候使用是会报错的
2.if判断展开,例如:

if (a1 != nil) {
    let count = a1!.count;
    print(count);
}

3.使用可选项绑定的方式

if let a2 = a1 {
    let count = a2.count;
    print(count);
};

3.函数

函数的定义和使用

函数:函数用来完成特定任务的独立的代码块。
Swift
Swift 定义函数使用关键字 func。

func funcname(形参) -> returntype
{
   Statement1
   Statement2
   ……
   Statement N
   return parameters
}

1.函数的入参可以有多个,他们之间用逗号隔开,函数入参和返回值也不是必须的

func somebodysaySomething(name: String, something: String) -> String {
    let str = "\(name) say \(something)";
    print(str);
    return str;
          
}
let str = somebodysaySomething(name: "kong",something: "hello");
func sayHello() {
    print("hello");
          
}

2.一般默认在函数中定义的参数都是常量参数,也就是这个参数你只可以查询使用,不能改变它的值。
如果想要声明一个变量参数,可以在参数定义前加 inout 关键字,这样就可以改变这个参数的值了,当传入的参数作为输入输出参数时,需要在参数名前加 & 符,表示这个值可以被函数修改。

func somebodysaySomething(name: inout String, something: String) -> String {
    name = "小明";
    let str = "\(name) say \(something)";
    print(str);
    return str;
          
}
var namestr = "kong";
var hello = "hello";
somebodysaySomething(name: &namestr,something: "hello");

在Swift中不允许修改方法函数中的参数值,因为方法中参数传递的是值而不是地址,参数被修改时编译器会认为此参数为常量类型,为什么加了inout之后就可以改变了呢,因为调用时使用&取地址,向方法中传入的是地址。注意:只能把变量作为输入输出形式参数的实际参数。你不能用常量或者字面量作为实际参数,因为常量和字面量不能修

3.函数也可以作为参数和返回值

func sum(a: Int, b: Int) -> Int {
    return a + b
}

func multiplier(a: Int, b: Int) -> Int {
    return a * b
}

func another(addition: (Int, Int) -> Int, a: Int, b: Int) {
    print("输出结果: \(addition(a, b))")
}
another(addition: sum, a: 10, b: 20)

func method(condition: Int ) -> (Int,Int) -> Int {
    if(condition>5)
    {
        return sum;
    }else {
        return multiplier;
    }
}
print("计算结果1: \(method(condition:1)(10,2))");
print("计算结果6: \(method(condition:6)(10,2))");

4.可变参数,可变参数可以接受零个或多个值,可变参数通过在变量类型名后面加入(...)的方式来定义。

func add(members: Int...){
    var sum = 0;
    for i in members {
        sum = sum + i;
    }
    print("sum:\(sum)")
}
add(members: 1,2,3);
add(members: 1,2,3,4);

JavaScript
JavaScript 定义函数使用关键字 function。

function functionname()
{
    // 执行代码
}
  1. 函数不介意传递进来参数个数以及类型,因为js中的参数在内部是用一个数组来表示的,函数接收到的始终是这个数组,至于数组中包含的内容并不关心。即使你定义的函数只接收两个参数,那么你传递一个或三个或不传参数都无所谓;
function go(x){   
  console.log(arguments[0]);   
  console.log(arguments[1]);  
}  
go(1,2);
  1. 函数不必指定是否返回值,只要return语句后跟要返回的值即可实现返回值;
function myFunction(a,b)
{
return a*b;
}

3.函数也可以作为参数和返回值

function sum (num1, num2) {
    return num1 + num2;
}
function fuc (num3, num4) {
    return num3 + num4;
}
console.log(fuc(sum(2,3), 5));  //10

function sum (num1, num2) {
        return num1+num2;
}
function func(num1){
        return sum(num1,10);
}
alert(func(10));    //20

相关文章

  • JavaScript和swift类比学习

    通过这次分享让大家初步的了解JavaScript或者是swift,通过两个的类比加深彼此的记忆。 1.变量和常量 ...

  • Swift和Javascript的神奇魔法

    Swift和Javascript的神奇魔法 记录Swift和Javascript如何进行交互 前言 今天在网上看到...

  • Open Swift 和 JavaScript 对比分析

    Open Swift 和 JavaScript 对比分析 标签(空格分隔): JavaScript

  • 异步处理举例

    类比Java Web中的Servlet异步处理类比JavaScript中的Ajax异步处理类比WebSocket中...

  • 亲自动手写一个Python库(一)

    引子 学习编程以来,接触过Basic,C/C++,Swift,JavaScript和Python五种语言,其中最爱...

  • ES6第一讲

    ECMAScript 和JavaScript var let const (最近同时在看swift,别乱套了?) ...

  • 学习和识别类比和象征

    所谓类比,又称类推或者类比推理,就是由两个对象的某些相同或相似的性质,推断它们在其他性质上也有可能相同或相似的一种...

  • JavaScript函数(类比php)

    默认参数 和php中一样,还没有一种语法允许一个函数参数带有默认值。(咱们可以这么玩) 任意多个参数 js对函数的...

  • javascript语法(类比php)

    关联数组 php javascript 注意:将键包围起来的引号,我们把键称为属性,他们的确是一个对象的属性,通常...

  • 类比学习

    和你一起成为有趣的人,这里是爱智慧,我是淏渊。 昨天介绍了《动物画技法》,今天介绍一下我们老师是怎么教我们画动物的...

网友评论

      本文标题:JavaScript和swift类比学习

      本文链接:https://www.haomeiwen.com/subject/akrnurtx.html